<!DOCTYPE html>
<html lang="zh-CN">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta name="robots" content="noodp" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1">
        <title>后端架构师技术图谱 - 负责和大饼的博客</title><meta name="Description" content="想专注于学点手艺"><meta property="og:title" content="后端架构师技术图谱" />
<meta property="og:description" content="推荐:《Java技术书籍大全》 - awesome-java-books 数据结构 队列 集合 链表、数组 字典、关联数组 栈 树 二叉树 完全二叉树 平衡二叉树 二叉查找树（BST） 红黑树 B，B&#43;，" />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://amath0312.github.com/architect_awesome/" />
<meta property="article:published_time" content="2019-07-24T22:51:02+08:00" />
<meta property="article:modified_time" content="2019-07-24T22:51:02+08:00" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="后端架构师技术图谱"/>
<meta name="twitter:description" content="推荐:《Java技术书籍大全》 - awesome-java-books 数据结构 队列 集合 链表、数组 字典、关联数组 栈 树 二叉树 完全二叉树 平衡二叉树 二叉查找树（BST） 红黑树 B，B&#43;，"/>
<meta name="application-name" content="负责和大饼的博客">
<meta name="apple-mobile-web-app-title" content="负责和大饼的博客"><link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
        <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
        <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="manifest" href="/site.webmanifest"><link rel="canonical" href="https://amath0312.github.com/architect_awesome/" /><link rel="prev" href="https://amath0312.github.com/hugo_quick_start/" /><link rel="next" href="https://amath0312.github.com/git_muilt_sshkey/" /><link rel="stylesheet" href="/lib/normalize/normalize.min.css"><link rel="stylesheet" href="/css/style.min.css"><link rel="stylesheet" href="/lib/fontawesome-free/all.min.css"><link rel="stylesheet" href="/lib/animate/animate.min.css"><script type="application/ld+json">
    {
        "@context": "http://schema.org",
        "@type": "BlogPosting",
        "headline": "后端架构师技术图谱",
        "inLanguage": "zh-CN",
        "mainEntityOfPage": {
            "@type": "WebPage",
            "@id": "https:\/\/amath0312.github.com\/architect_awesome\/"
        },"genre": "posts","keywords": "转载, 架构, 后端","wordcount":  27937 ,
        "url": "https:\/\/amath0312.github.com\/architect_awesome\/","datePublished": "2019-07-24T22:51:02+08:00","dateModified": "2019-07-24T22:51:02+08:00","publisher": {
            "@type": "Organization",
            "name": "Author"},"author": {
                "@type": "Person",
                "name": "Author"
            },"description": ""
    }
    </script></head>
    <body header-desktop="" header-mobile=""><script type="text/javascript">(window.localStorage && localStorage.getItem('theme') ? localStorage.getItem('theme') === 'dark' : ('' === 'auto' ? window.matchMedia('(prefers-color-scheme: dark)').matches : '' === 'dark')) && document.body.setAttribute('theme', 'dark');</script>

        <div id="mask"></div><div class="wrapper"><header class="desktop" id="header-desktop">
    <div class="header-wrapper">
        <div class="header-title">
            <a href="/" title="负责和大饼的博客">负责和大饼的博客</a>
        </div>
        <div class="menu">
            <div class="menu-inner"><a class="menu-item" href="/posts/"> Blog </a><a class="menu-item" href="/categories/"> Categories </a><a class="menu-item" href="/tags/"> Tags </a><a class="menu-item" href="/about/"> About </a><span class="menu-item delimiter"></span><span class="menu-item search" id="search-desktop">
                        <input type="text" placeholder="Search titles or contents..." id="search-input-desktop">
                        <a href="javascript:void(0);" class="search-button search-toggle" id="search-toggle-desktop" title="Search">
                            <i class="fas fa-search fa-fw"></i>
                        </a>
                        <a href="javascript:void(0);" class="search-button search-clear" id="search-clear-desktop" title="Clear">
                            <i class="fas fa-times-circle fa-fw"></i>
                        </a>
                        <span class="search-button search-loading" id="search-loading-desktop">
                            <i class="fas fa-spinner fa-fw fa-spin"></i>
                        </span>
                    </span><a href="javascript:void(0);" class="menu-item theme-switch" title="Switch Theme">
                    <i class="fas fa-adjust fa-fw"></i>
                </a>
            </div>
        </div>
    </div>
</header><header class="mobile" id="header-mobile">
    <div class="header-container">
        <div class="header-wrapper">
            <div class="header-title">
                <a href="/" title="负责和大饼的博客">负责和大饼的博客</a>
            </div>
            <div class="menu-toggle" id="menu-toggle-mobile">
                <span></span><span></span><span></span>
            </div>
        </div>
        <div class="menu" id="menu-mobile"><div class="search-wrapper">
                    <div class="search mobile" id="search-mobile">
                        <input type="text" placeholder="Search titles or contents..." id="search-input-mobile">
                        <a href="javascript:void(0);" class="search-button search-toggle" id="search-toggle-mobile" title="Search">
                            <i class="fas fa-search fa-fw"></i>
                        </a>
                        <a href="javascript:void(0);" class="search-button search-clear" id="search-clear-mobile" title="Clear">
                            <i class="fas fa-times-circle fa-fw"></i>
                        </a>
                        <span class="search-button search-loading" id="search-loading-mobile">
                            <i class="fas fa-spinner fa-fw fa-spin"></i>
                        </span>
                    </div>
                    <a href="javascript:void(0);" class="search-cancel" id="search-cancel-mobile">
                        Cancel
                    </a>
                </div><a class="menu-item" href="/posts/" title="">Blog</a><a class="menu-item" href="/categories/" title="">Categories</a><a class="menu-item" href="/tags/" title="">Tags</a><a class="menu-item" href="/about/" title="">About</a><a href="javascript:void(0);" class="menu-item theme-switch" title="Switch Theme">
                <i class="fas fa-adjust fa-fw"></i>
            </a></div>
    </div>
</header>
<div class="search-dropdown desktop">
    <div id="search-dropdown-desktop"></div>
</div>
<div class="search-dropdown mobile">
    <div id="search-dropdown-mobile"></div>
</div>
<main class="main">
                <div class="container"><div class="toc" id="toc-auto">
            <h2 class="toc-title">Contents</h2>
            <div class="toc-content" id="toc-content-auto"></div>
        </div><article class="page single"><h1 class="single-title animated flipInX">后端架构师技术图谱</h1><div class="post-meta">
            <div class="post-meta-line"><span class="post-author"><a href="/" title="Author" rel=" author" class="author"><i class="fas fa-user-circle fa-fw"></i>Author</a></span>&nbsp;<span class="post-category">included in <a href="/categories/%E6%8A%80%E6%9C%AF%E6%9E%B6%E6%9E%84/"><i class="far fa-folder fa-fw"></i>技术架构</a></span></div>
            <div class="post-meta-line"><i class="far fa-calendar-alt fa-fw"></i>&nbsp;<time datetime="2019-07-08">2019-07-08</time>&nbsp;<i class="fas fa-pencil-alt fa-fw"></i>&nbsp;27937 words&nbsp;
                <i class="far fa-clock fa-fw"></i>&nbsp;56 minutes&nbsp;</div>
        </div><div class="details toc" id="toc-static"  kept="">
                <div class="details-summary toc-title">
                    <span>Contents</span>
                    <span><i class="details-icon fas fa-angle-right"></i></span>
                </div>
                <div class="details-content toc-content" id="toc-content-static"><nav id="TableOfContents">
  <ul>
    <li><a href="#队列">队列</a></li>
    <li><a href="#集合">集合</a></li>
    <li><a href="#链表数组">链表、数组</a></li>
    <li><a href="#字典关联数组">字典、关联数组</a></li>
    <li><a href="#栈">栈</a></li>
    <li><a href="#树">树</a>
      <ul>
        <li><a href="#二叉树">二叉树</a></li>
        <li><a href="#完全二叉树">完全二叉树</a></li>
        <li><a href="#平衡二叉树">平衡二叉树</a></li>
        <li><a href="#二叉查找树bst">二叉查找树（BST）</a></li>
        <li><a href="#红黑树">红黑树</a></li>
        <li><a href="#bbb树">B，B+，B*树</a></li>
        <li><a href="#lsm-树">LSM 树</a></li>
      </ul>
    </li>
    <li><a href="#bitset">BitSet</a></li>
  </ul>

  <ul>
    <li><a href="#排序查找算法">排序、查找算法</a>
      <ul>
        <li><a href="#选择排序">选择排序</a></li>
        <li><a href="#冒泡排序">冒泡排序</a></li>
        <li><a href="#插入排序">插入排序</a></li>
        <li><a href="#快速排序">快速排序</a></li>
        <li><a href="#归并排序">归并排序</a></li>
        <li><a href="#希尔排序">希尔排序</a></li>
        <li><a href="#堆排序">堆排序</a></li>
        <li><a href="#计数排序">计数排序</a></li>
        <li><a href="#桶排序">桶排序</a></li>
        <li><a href="#基数排序">基数排序</a></li>
        <li><a href="#二分查找">二分查找</a></li>
        <li><a href="#java-中的排序工具">Java 中的排序工具</a></li>
      </ul>
    </li>
    <li><a href="#布隆过滤器">布隆过滤器</a></li>
    <li><a href="#字符串比较">字符串比较</a>
      <ul>
        <li><a href="#kmp-算法">KMP 算法</a></li>
      </ul>
    </li>
    <li><a href="#深度优先广度优先">深度优先、广度优先</a></li>
    <li><a href="#贪心算法">贪心算法</a></li>
    <li><a href="#回溯算法">回溯算法</a></li>
    <li><a href="#剪枝算法">剪枝算法</a></li>
    <li><a href="#动态规划">动态规划</a></li>
    <li><a href="#朴素贝叶斯">朴素贝叶斯</a></li>
    <li><a href="#推荐算法">推荐算法</a></li>
    <li><a href="#最小生成树算法">最小生成树算法</a></li>
    <li><a href="#最短路径算法">最短路径算法</a></li>
  </ul>

  <ul>
    <li><a href="#java-并发">Java 并发</a></li>
    <li><a href="#多线程">多线程</a></li>
    <li><a href="#线程安全">线程安全</a></li>
    <li><a href="#一致性事务">一致性、事务</a>
      <ul>
        <li><a href="#事务-acid-特性">事务 ACID 特性</a></li>
        <li><a href="#事务的隔离级别">事务的隔离级别</a></li>
        <li><a href="#mvcc">MVCC</a></li>
      </ul>
    </li>
    <li><a href="#锁">锁</a>
      <ul>
        <li><a href="#java中的锁和同步类">Java中的锁和同步类</a></li>
        <li><a href="#公平锁--非公平锁">公平锁 &amp; 非公平锁</a></li>
        <li><a href="#悲观锁">悲观锁</a></li>
        <li><a href="#乐观锁--cas">乐观锁 &amp; CAS</a></li>
        <li><a href="#aba-问题">ABA 问题</a></li>
        <li><a href="#copyonwrite容器">CopyOnWrite容器</a></li>
        <li><a href="#ringbuffer">RingBuffer</a></li>
        <li><a href="#可重入锁--不可重入锁">可重入锁 &amp; 不可重入锁</a></li>
        <li><a href="#互斥锁--共享锁">互斥锁 &amp; 共享锁</a></li>
        <li><a href="#死锁">死锁</a></li>
      </ul>
    </li>
  </ul>

  <ul>
    <li><a href="#计算机原理">计算机原理</a></li>
    <li><a href="#cpu">CPU</a>
      <ul>
        <li><a href="#多级缓存">多级缓存</a></li>
      </ul>
    </li>
    <li><a href="#进程">进程</a></li>
    <li><a href="#线程">线程</a></li>
    <li><a href="#协程">协程</a></li>
    <li><a href="#linux">Linux</a></li>
  </ul>

  <ul>
    <li><a href="#设计模式的六大原则">设计模式的六大原则</a></li>
    <li><a href="#23种常见设计模式">23种常见设计模式</a></li>
    <li><a href="#应用场景">应用场景</a></li>
    <li><a href="#单例模式">单例模式</a></li>
    <li><a href="#责任链模式">责任链模式</a></li>
    <li><a href="#mvc">MVC</a></li>
    <li><a href="#ioc">IOC</a></li>
    <li><a href="#aop">AOP</a></li>
    <li><a href="#uml">UML</a></li>
    <li><a href="#微服务思想">微服务思想</a>
      <ul>
        <li><a href="#康威定律">康威定律</a></li>
      </ul>
    </li>
  </ul>

  <ul>
    <li><a href="#常规监控">常规监控</a></li>
    <li><a href="#apm">APM</a></li>
    <li><a href="#统计分析">统计分析</a></li>
    <li><a href="#持续集成cicd">持续集成(CI/CD)</a>
      <ul>
        <li><a href="#jenkins">Jenkins</a></li>
        <li><a href="#环境分离">环境分离</a></li>
      </ul>
    </li>
    <li><a href="#自动化运维">自动化运维</a>
      <ul>
        <li><a href="#ansible">Ansible</a></li>
        <li><a href="#puppet">puppet</a></li>
        <li><a href="#chef">chef</a></li>
      </ul>
    </li>
    <li><a href="#测试">测试</a>
      <ul>
        <li><a href="#tdd-理论">TDD 理论</a></li>
        <li><a href="#单元测试">单元测试</a></li>
        <li><a href="#压力测试">压力测试</a></li>
        <li><a href="#全链路压测">全链路压测</a></li>
        <li><a href="#ab-灰度蓝绿测试">A/B 、灰度、蓝绿测试</a></li>
      </ul>
    </li>
    <li><a href="#虚拟化">虚拟化</a>
      <ul>
        <li><a href="#kvm">KVM</a></li>
        <li><a href="#xen">Xen</a></li>
        <li><a href="#openvz">OpenVZ</a></li>
      </ul>
    </li>
    <li><a href="#容器技术">容器技术</a>
      <ul>
        <li><a href="#docker">Docker</a></li>
      </ul>
    </li>
    <li><a href="#云技术">云技术</a>
      <ul>
        <li><a href="#openstack">OpenStack</a></li>
      </ul>
    </li>
    <li><a href="#devops">DevOps</a></li>
    <li><a href="#文档管理">文档管理</a></li>
  </ul>

  <ul>
    <li><a href="#web-server">Web Server</a>
      <ul>
        <li><a href="#nginx">Nginx</a></li>
        <li><a href="#openresty">OpenResty</a></li>
        <li><a href="#tengine">Tengine</a></li>
        <li><a href="#apache-httpd">Apache Httpd</a></li>
        <li><a href="#tomcat">Tomcat</a></li>
        <li><a href="#jetty">Jetty</a></li>
      </ul>
    </li>
    <li><a href="#缓存">缓存</a>
      <ul>
        <li><a href="#本地缓存">本地缓存</a></li>
      </ul>
    </li>
    <li><a href="#客户端缓存">客户端缓存</a></li>
    <li><a href="#服务端缓存">服务端缓存</a>
      <ul>
        <li><a href="#web缓存">Web缓存</a></li>
        <li><a href="#memcached">Memcached</a></li>
        <li><a href="#redis">Redis</a></li>
        <li><a href="#tair">Tair</a></li>
      </ul>
    </li>
    <li><a href="#消息队列">消息队列</a>
      <ul>
        <li><a href="#消息总线">消息总线</a></li>
        <li><a href="#消息的顺序">消息的顺序</a></li>
        <li><a href="#rabbitmq">RabbitMQ</a></li>
        <li><a href="#rocketmq">RocketMQ</a></li>
        <li><a href="#activemq">ActiveMQ</a></li>
        <li><a href="#kafka">Kafka</a></li>
        <li><a href="#redis-消息推送">Redis 消息推送</a></li>
        <li><a href="#zeromq">ZeroMQ</a></li>
      </ul>
    </li>
    <li><a href="#定时调度">定时调度</a>
      <ul>
        <li><a href="#单机定时调度">单机定时调度</a></li>
        <li><a href="#分布式定时调度">分布式定时调度</a></li>
      </ul>
    </li>
    <li><a href="#rpc">RPC</a>
      <ul>
        <li><a href="#dubbo">Dubbo</a></li>
        <li><a href="#thrift">Thrift</a></li>
        <li><a href="#grpc">gRPC</a></li>
      </ul>
    </li>
    <li><a href="#数据库中间件">数据库中间件</a>
      <ul>
        <li><a href="#sharding-jdbc">Sharding Jdbc</a></li>
      </ul>
    </li>
    <li><a href="#日志系统">日志系统</a>
      <ul>
        <li><a href="#日志搜集">日志搜集</a></li>
      </ul>
    </li>
    <li><a href="#配置中心">配置中心</a></li>
    <li><a href="#api-网关">API 网关</a></li>
  </ul>

  <ul>
    <li><a href="#协议">协议</a>
      <ul>
        <li><a href="#osi-七层协议">OSI 七层协议</a></li>
        <li><a href="#tcpip">TCP/IP</a></li>
        <li><a href="#http">HTTP</a></li>
        <li><a href="#http20">HTTP2.0</a></li>
        <li><a href="#https">HTTPS</a></li>
      </ul>
    </li>
    <li><a href="#网络模型">网络模型</a>
      <ul>
        <li><a href="#epoll">Epoll</a></li>
        <li><a href="#java-nio">Java NIO</a></li>
        <li><a href="#kqueue">kqueue</a></li>
      </ul>
    </li>
    <li><a href="#连接和短连接">连接和短连接</a></li>
    <li><a href="#框架">框架</a></li>
    <li><a href="#零拷贝zero-copy">零拷贝（Zero-copy）</a></li>
    <li><a href="#序列化二进制协议">序列化(二进制协议)</a>
      <ul>
        <li><a href="#hessian">Hessian</a></li>
        <li><a href="#protobuf">Protobuf</a></li>
      </ul>
    </li>
  </ul>

  <ul>
    <li><a href="#基础理论">基础理论</a>
      <ul>
        <li><a href="#关系数据库设计的三大范式">关系数据库设计的三大范式</a></li>
      </ul>
    </li>
    <li><a href="#mysql">MySQL</a>
      <ul>
        <li><a href="#原理">原理</a></li>
        <li><a href="#innodb">InnoDB</a></li>
        <li><a href="#优化">优化</a></li>
        <li><a href="#索引">索引</a></li>
        <li><a href="#explain">explain</a></li>
      </ul>
    </li>
    <li><a href="#nosql">NoSQL</a>
      <ul>
        <li><a href="#mongodb">MongoDB</a></li>
        <li><a href="#hbase">Hbase</a></li>
      </ul>
    </li>
  </ul>

  <ul>
    <li><a href="#搜索引擎原理">搜索引擎原理</a></li>
    <li><a href="#lucene">Lucene</a></li>
    <li><a href="#elasticsearch">Elasticsearch</a></li>
    <li><a href="#solr">Solr</a></li>
    <li><a href="#sphinx">sphinx</a></li>
  </ul>

  <ul>
    <li><a href="#性能优化方法论">性能优化方法论</a></li>
    <li><a href="#容量评估">容量评估</a></li>
    <li><a href="#cdn-网络">CDN 网络</a></li>
    <li><a href="#连接池">连接池</a></li>
    <li><a href="#性能调优">性能调优</a></li>
  </ul>

  <ul>
    <li><a href="#流式计算">流式计算</a>
      <ul>
        <li><a href="#storm">Storm</a></li>
        <li><a href="#flink">Flink</a></li>
        <li><a href="#kafka-stream">Kafka Stream</a></li>
        <li><a href="#应用场景-1">应用场景</a></li>
      </ul>
    </li>
    <li><a href="#hadoop">Hadoop</a>
      <ul>
        <li><a href="#hdfs">HDFS</a></li>
        <li><a href="#mapreduce">MapReduce</a></li>
        <li><a href="#yarn">Yarn</a></li>
      </ul>
    </li>
    <li><a href="#spark">Spark</a></li>
  </ul>

  <ul>
    <li><a href="#web-安全">web 安全</a>
      <ul>
        <li><a href="#xss">XSS</a></li>
        <li><a href="#csrf">CSRF</a></li>
        <li><a href="#sql-注入">SQL 注入</a></li>
        <li><a href="#hash-dos">Hash Dos</a></li>
        <li><a href="#脚本注入">脚本注入</a></li>
        <li><a href="#漏洞扫描工具">漏洞扫描工具</a></li>
        <li><a href="#验证码">验证码</a></li>
      </ul>
    </li>
    <li><a href="#ddos-防范">DDoS 防范</a></li>
    <li><a href="#用户隐私信息保护">用户隐私信息保护</a></li>
    <li><a href="#序列化漏洞">序列化漏洞</a></li>
    <li><a href="#加密解密">加密解密</a>
      <ul>
        <li><a href="#对称加密">对称加密</a></li>
        <li><a href="#哈希算法">哈希算法</a></li>
        <li><a href="#非对称加密">非对称加密</a></li>
      </ul>
    </li>
    <li><a href="#服务器安全">服务器安全</a></li>
    <li><a href="#数据安全">数据安全</a>
      <ul>
        <li><a href="#数据备份">数据备份</a></li>
      </ul>
    </li>
    <li><a href="#网络隔离">网络隔离</a>
      <ul>
        <li><a href="#内外网分离">内外网分离</a></li>
        <li><a href="#登录跳板机">登录跳板机</a></li>
      </ul>
    </li>
    <li><a href="#授权认证">授权、认证</a>
      <ul>
        <li><a href="#rbac">RBAC</a></li>
        <li><a href="#oauth20">OAuth2.0</a></li>
        <li><a href="#双因素认证2fa">双因素认证（2FA）</a></li>
        <li><a href="#单点登录sso">单点登录(SSO)</a></li>
      </ul>
    </li>
  </ul>

  <ul>
    <li><a href="#开源协议">开源协议</a></li>
    <li><a href="#日志框架">日志框架</a>
      <ul>
        <li><a href="#log4jlog4j2">Log4j、Log4j2</a></li>
        <li><a href="#logback">Logback</a></li>
      </ul>
    </li>
    <li><a href="#orm">ORM</a></li>
    <li><a href="#网络框架">网络框架</a></li>
    <li><a href="#web-框架">Web 框架</a>
      <ul>
        <li><a href="#spring-家族">Spring 家族</a></li>
      </ul>
    </li>
    <li><a href="#工具框架">工具框架</a></li>
  </ul>

  <ul>
    <li><a href="#扩展性设计">扩展性设计</a></li>
    <li><a href="#稳定性--高可用">稳定性 &amp; 高可用</a>
      <ul>
        <li><a href="#硬件负载均衡">硬件负载均衡</a></li>
        <li><a href="#软件负载均衡">软件负载均衡</a></li>
        <li><a href="#限流">限流</a></li>
        <li><a href="#应用层容灾">应用层容灾</a></li>
        <li><a href="#跨机房容灾">跨机房容灾</a></li>
        <li><a href="#容灾演练流程">容灾演练流程</a></li>
        <li><a href="#平滑启动">平滑启动</a></li>
      </ul>
    </li>
    <li><a href="#数据库扩展">数据库扩展</a>
      <ul>
        <li><a href="#读写分离模式">读写分离模式</a></li>
        <li><a href="#分片模式">分片模式</a></li>
      </ul>
    </li>
    <li><a href="#服务治理">服务治理</a>
      <ul>
        <li><a href="#服务注册与发现">服务注册与发现</a></li>
        <li><a href="#服务路由控制">服务路由控制</a></li>
      </ul>
    </li>
    <li><a href="#分布式一致">分布式一致</a>
      <ul>
        <li><a href="#cap-与-base-理论">CAP 与 BASE 理论</a></li>
        <li><a href="#分布式锁">分布式锁</a></li>
        <li><a href="#分布式一致性算法">分布式一致性算法</a></li>
        <li><a href="#幂等">幂等</a></li>
        <li><a href="#分布式一致方案">分布式一致方案</a></li>
        <li><a href="#分布式-leader-节点选举">分布式 Leader 节点选举</a></li>
        <li><a href="#tcctryconfirmcancel-柔性事务">TCC(Try/Confirm/Cancel) 柔性事务</a></li>
      </ul>
    </li>
    <li><a href="#分布式文件系统">分布式文件系统</a></li>
    <li><a href="#唯一id-生成">唯一ID 生成</a>
      <ul>
        <li><a href="#全局唯一id">全局唯一ID</a></li>
      </ul>
    </li>
    <li><a href="#一致性hash算法">一致性Hash算法</a></li>
  </ul>

  <ul>
    <li><a href="#ddddomain-driven-design---领域驱动设计">DDD(Domain-driven Design - 领域驱动设计)</a>
      <ul>
        <li><a href="#命令查询职责分离cqrs">命令查询职责分离(CQRS)</a></li>
        <li><a href="#贫血充血模型">贫血，充血模型</a></li>
      </ul>
    </li>
    <li><a href="#actor-模式">Actor 模式</a></li>
    <li><a href="#响应式编程">响应式编程</a>
      <ul>
        <li><a href="#reactor">Reactor</a></li>
        <li><a href="#rxjava">RxJava</a></li>
        <li><a href="#vertx">Vert.x</a></li>
      </ul>
    </li>
    <li><a href="#dodaf20">DODAF2.0</a></li>
    <li><a href="#serverless">Serverless</a></li>
    <li><a href="#service-mesh">Service Mesh</a></li>
  </ul>

  <ul>
    <li><a href="#架构评审">架构评审</a></li>
    <li><a href="#重构">重构</a></li>
    <li><a href="#代码规范">代码规范</a></li>
    <li><a href="#代码-review">代码 Review</a></li>
    <li><a href="#rup">RUP</a></li>
    <li><a href="#看板管理">看板管理</a></li>
    <li><a href="#scrum">SCRUM</a></li>
    <li><a href="#敏捷开发">敏捷开发</a></li>
    <li><a href="#极限编程xp">极限编程（XP）</a></li>
    <li><a href="#结对编程">结对编程</a></li>
    <li><a href="#pdca-循环质量管理">PDCA 循环质量管理</a></li>
    <li><a href="#fmea管理模式">FMEA管理模式</a></li>
  </ul>

  <ul>
    <li><a href="#法律">法律</a>
      <ul>
        <li><a href="#严格遵守刑法253法条">严格遵守刑法253法条</a></li>
        <li><a href="#避风港原则">避风港原则</a></li>
      </ul>
    </li>
  </ul>

  <ul>
    <li><a href="#招聘">招聘</a></li>
  </ul>

  <ul>
    <li><a href="#行业资讯">行业资讯</a></li>
    <li><a href="#公众号列表">公众号列表</a></li>
    <li><a href="#博客">博客</a>
      <ul>
        <li><a href="#团队博客">团队博客</a></li>
        <li><a href="#个人博客">个人博客</a></li>
      </ul>
    </li>
    <li><a href="#综合门户社区">综合门户、社区</a></li>
    <li><a href="#问答讨论类社区">问答、讨论类社区</a></li>
    <li><a href="#行业数据分析">行业数据分析</a></li>
    <li><a href="#专项网站">专项网站</a></li>
    <li><a href="#其他类">其他类</a></li>
    <li><a href="#推荐参考书">推荐参考书</a>
      <ul>
        <li><a href="#在线电子书">在线电子书</a></li>
        <li><a href="#纸质书">纸质书</a></li>
      </ul>
    </li>
  </ul>

  <ul>
    <li><a href="#开源资源">开源资源</a></li>
    <li><a href="#手册文档教程">手册、文档、教程</a></li>
    <li><a href="#在线课堂">在线课堂</a></li>
    <li><a href="#会议活动">会议、活动</a></li>
    <li><a href="#常用app">常用APP</a></li>
    <li><a href="#找工作">找工作</a></li>
    <li><a href="#工具">工具</a></li>
    <li><a href="#代码托管">代码托管</a></li>
    <li><a href="#文件服务">文件服务</a></li>
    <li><a href="#综合云服务商">综合云服务商</a>
      <ul>
        <li><a href="#vps">VPS</a></li>
      </ul>
    </li>
  </ul>
</nav></div>
            </div><div class="content" id="content"><!-- raw HTML omitted -->
<p><!-- raw HTML omitted -->推荐:<!-- raw HTML omitted --> <a href="https://github.com/sorenduan/awesome-java-books" target="_blank" rel="noopener noreffer">《Java技术书籍大全》 - awesome-java-books</a></p>
<!-- raw HTML omitted -->
<p><a href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh" target="_blank" rel="noopener noreffer"><img
        class="lazyload"
        src="/svg/loading.min.svg"
        data-src="https://img.shields.io/badge/License-Creative%20Commons-DC3D24.svg"
        data-srcset="https://img.shields.io/badge/License-Creative%20Commons-DC3D24.svg, https://img.shields.io/badge/License-Creative%20Commons-DC3D24.svg 1.5x, https://img.shields.io/badge/License-Creative%20Commons-DC3D24.svg 2x"
        data-sizes="auto"
        alt="https://img.shields.io/badge/License-Creative%20Commons-DC3D24.svg"
        title="知识共享协议（CC协议）" /></a>
<a href="https://github.com/xingshaocheng/architect-awesome/stargazers" target="_blank" rel="noopener noreffer"><img
        class="lazyload"
        src="/svg/loading.min.svg"
        data-src="https://img.shields.io/github/stars/xingshaocheng/architect-awesome.svg?style=flat&amp;label=Star"
        data-srcset="https://img.shields.io/github/stars/xingshaocheng/architect-awesome.svg?style=flat&amp;label=Star, https://img.shields.io/github/stars/xingshaocheng/architect-awesome.svg?style=flat&amp;label=Star 1.5x, https://img.shields.io/github/stars/xingshaocheng/architect-awesome.svg?style=flat&amp;label=Star 2x"
        data-sizes="auto"
        alt="https://img.shields.io/github/stars/xingshaocheng/architect-awesome.svg?style=flat&amp;label=Star"
        title="GitHub stars" /></a>
<a href="https://github.com/xingshaocheng/architect-awesome/fork" target="_blank" rel="noopener noreffer"><img
        class="lazyload"
        src="/svg/loading.min.svg"
        data-src="https://img.shields.io/github/forks/xingshaocheng/architect-awesome.svg?style=flat&amp;label=Fork"
        data-srcset="https://img.shields.io/github/forks/xingshaocheng/architect-awesome.svg?style=flat&amp;label=Fork, https://img.shields.io/github/forks/xingshaocheng/architect-awesome.svg?style=flat&amp;label=Fork 1.5x, https://img.shields.io/github/forks/xingshaocheng/architect-awesome.svg?style=flat&amp;label=Fork 2x"
        data-sizes="auto"
        alt="https://img.shields.io/github/forks/xingshaocheng/architect-awesome.svg?style=flat&amp;label=Fork"
        title="GitHub forks" /></a>
<a href="https://github.com/xingshaocheng/architect-awesome/watchers" target="_blank" rel="noopener noreffer"><img
        class="lazyload"
        src="/svg/loading.min.svg"
        data-src="https://img.shields.io/github/watchers/xingshaocheng/architect-awesome.svg?style=flat&amp;label=Watch"
        data-srcset="https://img.shields.io/github/watchers/xingshaocheng/architect-awesome.svg?style=flat&amp;label=Watch, https://img.shields.io/github/watchers/xingshaocheng/architect-awesome.svg?style=flat&amp;label=Watch 1.5x, https://img.shields.io/github/watchers/xingshaocheng/architect-awesome.svg?style=flat&amp;label=Watch 2x"
        data-sizes="auto"
        alt="https://img.shields.io/github/watchers/xingshaocheng/architect-awesome.svg?style=flat&amp;label=Watch"
        title="GitHub watchers" /></a>
<a href="https://github.com/xingshaocheng" target="_blank" rel="noopener noreffer"><img
        class="lazyload"
        src="/svg/loading.min.svg"
        data-src="https://img.shields.io/github/followers/xingshaocheng.svg?label=%E5%85%B3%E6%B3%A8"
        data-srcset="https://img.shields.io/github/followers/xingshaocheng.svg?label=%E5%85%B3%E6%B3%A8, https://img.shields.io/github/followers/xingshaocheng.svg?label=%E5%85%B3%E6%B3%A8 1.5x, https://img.shields.io/github/followers/xingshaocheng.svg?label=%E5%85%B3%E6%B3%A8 2x"
        data-sizes="auto"
        alt="https://img.shields.io/github/followers/xingshaocheng.svg?label=%E5%85%B3%E6%B3%A8"
        title="GitHub followers" /></a></p>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%95%b0%e6%8d%ae%e7%bb%93%e6%9e%84" target="_blank" rel="noopener noreffer">数据结构</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e9%98%9f%e5%88%97" target="_blank" rel="noopener noreffer">队列</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e9%9b%86%e5%90%88" target="_blank" rel="noopener noreffer">集合</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e9%93%be%e8%a1%a8%e6%95%b0%e7%bb%84" target="_blank" rel="noopener noreffer">链表、数组</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%ad%97%e5%85%b8%e5%85%b3%e8%81%94%e6%95%b0%e7%bb%84" target="_blank" rel="noopener noreffer">字典、关联数组</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%a0%88" target="_blank" rel="noopener noreffer">栈</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%a0%91" target="_blank" rel="noopener noreffer">树</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%ba%8c%e5%8f%89%e6%a0%91" target="_blank" rel="noopener noreffer">二叉树</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%ae%8c%e5%85%a8%e4%ba%8c%e5%8f%89%e6%a0%91" target="_blank" rel="noopener noreffer">完全二叉树</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%b9%b3%e8%a1%a1%e4%ba%8c%e5%8f%89%e6%a0%91" target="_blank" rel="noopener noreffer">平衡二叉树</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%ba%8c%e5%8f%89%e6%9f%a5%e6%89%be%e6%a0%91bst" target="_blank" rel="noopener noreffer">二叉查找树（BST）</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%ba%a2%e9%bb%91%e6%a0%91" target="_blank" rel="noopener noreffer">红黑树</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#b-bb%e6%a0%91" target="_blank" rel="noopener noreffer">B，B+，B*树</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#lsm-%e6%a0%91" target="_blank" rel="noopener noreffer">LSM 树</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#bitset" target="_blank" rel="noopener noreffer">BitSet</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%b8%b8%e7%94%a8%e7%ae%97%e6%b3%95" target="_blank" rel="noopener noreffer">常用算法</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%8e%92%e5%ba%8f%e6%9f%a5%e6%89%be%e7%ae%97%e6%b3%95" target="_blank" rel="noopener noreffer">排序、查找算法</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e9%80%89%e6%8b%a9%e6%8e%92%e5%ba%8f" target="_blank" rel="noopener noreffer">选择排序</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%86%92%e6%b3%a1%e6%8e%92%e5%ba%8f" target="_blank" rel="noopener noreffer">冒泡排序</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%8f%92%e5%85%a5%e6%8e%92%e5%ba%8f" target="_blank" rel="noopener noreffer">插入排序</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%bf%ab%e9%80%9f%e6%8e%92%e5%ba%8f" target="_blank" rel="noopener noreffer">快速排序</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%bd%92%e5%b9%b6%e6%8e%92%e5%ba%8f" target="_blank" rel="noopener noreffer">归并排序</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%b8%8c%e5%b0%94%e6%8e%92%e5%ba%8f" target="_blank" rel="noopener noreffer">希尔排序</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%a0%86%e6%8e%92%e5%ba%8f" target="_blank" rel="noopener noreffer">堆排序</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%ae%a1%e6%95%b0%e6%8e%92%e5%ba%8f" target="_blank" rel="noopener noreffer">计数排序</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%a1%b6%e6%8e%92%e5%ba%8f" target="_blank" rel="noopener noreffer">桶排序</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%9f%ba%e6%95%b0%e6%8e%92%e5%ba%8f" target="_blank" rel="noopener noreffer">基数排序</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%ba%8c%e5%88%86%e6%9f%a5%e6%89%be" target="_blank" rel="noopener noreffer">二分查找</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#java-%e4%b8%ad%e7%9a%84%e6%8e%92%e5%ba%8f%e5%b7%a5%e5%85%b7" target="_blank" rel="noopener noreffer">Java 中的排序工具</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%b8%83%e9%9a%86%e8%bf%87%e6%bb%a4%e5%99%a8" target="_blank" rel="noopener noreffer">布隆过滤器</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%ad%97%e7%ac%a6%e4%b8%b2%e6%af%94%e8%be%83" target="_blank" rel="noopener noreffer">字符串比较</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#kmp-%e7%ae%97%e6%b3%95" target="_blank" rel="noopener noreffer">KMP 算法</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%b7%b1%e5%ba%a6%e4%bc%98%e5%85%88%e5%b9%bf%e5%ba%a6%e4%bc%98%e5%85%88" target="_blank" rel="noopener noreffer">深度优先、广度优先</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%b4%aa%e5%bf%83%e7%ae%97%e6%b3%95" target="_blank" rel="noopener noreffer">贪心算法</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%9b%9e%e6%ba%af%e7%ae%97%e6%b3%95" target="_blank" rel="noopener noreffer">回溯算法</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%89%aa%e6%9e%9d%e7%ae%97%e6%b3%95" target="_blank" rel="noopener noreffer">剪枝算法</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%8a%a8%e6%80%81%e8%a7%84%e5%88%92" target="_blank" rel="noopener noreffer">动态规划</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%9c%b4%e7%b4%a0%e8%b4%9d%e5%8f%b6%e6%96%af" target="_blank" rel="noopener noreffer">朴素贝叶斯</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%8e%a8%e8%8d%90%e7%ae%97%e6%b3%95" target="_blank" rel="noopener noreffer">推荐算法</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%9c%80%e5%b0%8f%e7%94%9f%e6%88%90%e6%a0%91%e7%ae%97%e6%b3%95" target="_blank" rel="noopener noreffer">最小生成树算法</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%9c%80%e7%9f%ad%e8%b7%af%e5%be%84%e7%ae%97%e6%b3%95" target="_blank" rel="noopener noreffer">最短路径算法</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%b9%b6%e5%8f%91" target="_blank" rel="noopener noreffer">并发</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#java-%e5%b9%b6%e5%8f%91" target="_blank" rel="noopener noreffer">Java 并发</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%a4%9a%e7%ba%bf%e7%a8%8b" target="_blank" rel="noopener noreffer">多线程</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%ba%bf%e7%a8%8b%e5%ae%89%e5%85%a8" target="_blank" rel="noopener noreffer">线程安全</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%b8%80%e8%87%b4%e6%80%a7%e4%ba%8b%e5%8a%a1" target="_blank" rel="noopener noreffer">一致性、事务</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%ba%8b%e5%8a%a1-acid-%e7%89%b9%e6%80%a7" target="_blank" rel="noopener noreffer">事务 ACID 特性</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%ba%8b%e5%8a%a1%e7%9a%84%e9%9a%94%e7%a6%bb%e7%ba%a7%e5%88%ab" target="_blank" rel="noopener noreffer">事务的隔离级别</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#mvcc" target="_blank" rel="noopener noreffer">MVCC</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e9%94%81" target="_blank" rel="noopener noreffer">锁</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#java%e4%b8%ad%e7%9a%84%e9%94%81%e5%92%8c%e5%90%8c%e6%ad%a5%e7%b1%bb" target="_blank" rel="noopener noreffer">Java中的锁和同步类</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%85%ac%e5%b9%b3%e9%94%81--%e9%9d%9e%e5%85%ac%e5%b9%b3%e9%94%81" target="_blank" rel="noopener noreffer">公平锁 &amp; 非公平锁</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%82%b2%e8%a7%82%e9%94%81" target="_blank" rel="noopener noreffer">悲观锁</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%b9%90%e8%a7%82%e9%94%81--cas" target="_blank" rel="noopener noreffer">乐观锁 &amp; CAS</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#aba-%e9%97%ae%e9%a2%98" target="_blank" rel="noopener noreffer">ABA 问题</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#copyonwrite%e5%ae%b9%e5%99%a8" target="_blank" rel="noopener noreffer">CopyOnWrite容器</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#ringbuffer" target="_blank" rel="noopener noreffer">RingBuffer</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%8f%af%e9%87%8d%e5%85%a5%e9%94%81--%e4%b8%8d%e5%8f%af%e9%87%8d%e5%85%a5%e9%94%81" target="_blank" rel="noopener noreffer">可重入锁 &amp; 不可重入锁</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%ba%92%e6%96%a5%e9%94%81--%e5%85%b1%e4%ba%ab%e9%94%81" target="_blank" rel="noopener noreffer">互斥锁 &amp; 共享锁</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%ad%bb%e9%94%81" target="_blank" rel="noopener noreffer">死锁</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f" target="_blank" rel="noopener noreffer">操作系统</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%ae%a1%e7%ae%97%e6%9c%ba%e5%8e%9f%e7%90%86" target="_blank" rel="noopener noreffer">计算机原理</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#cpu" target="_blank" rel="noopener noreffer">CPU</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%a4%9a%e7%ba%a7%e7%bc%93%e5%ad%98" target="_blank" rel="noopener noreffer">多级缓存</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%bf%9b%e7%a8%8b" target="_blank" rel="noopener noreffer">进程</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%ba%bf%e7%a8%8b" target="_blank" rel="noopener noreffer">线程</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%8d%8f%e7%a8%8b" target="_blank" rel="noopener noreffer">协程</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#linux" target="_blank" rel="noopener noreffer">Linux</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%ae%be%e8%ae%a1%e6%a8%a1%e5%bc%8f" target="_blank" rel="noopener noreffer">设计模式</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%ae%be%e8%ae%a1%e6%a8%a1%e5%bc%8f%e7%9a%84%e5%85%ad%e5%a4%a7%e5%8e%9f%e5%88%99" target="_blank" rel="noopener noreffer">设计模式的六大原则</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#23%e7%a7%8d%e5%b8%b8%e8%a7%81%e8%ae%be%e8%ae%a1%e6%a8%a1%e5%bc%8f" target="_blank" rel="noopener noreffer">23种常见设计模式</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%ba%94%e7%94%a8%e5%9c%ba%e6%99%af" target="_blank" rel="noopener noreffer">应用场景</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%8d%95%e4%be%8b%e6%a8%a1%e5%bc%8f" target="_blank" rel="noopener noreffer">单例模式</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%b4%a3%e4%bb%bb%e9%93%be%e6%a8%a1%e5%bc%8f" target="_blank" rel="noopener noreffer">责任链模式</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#mvc" target="_blank" rel="noopener noreffer">MVC</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#ioc" target="_blank" rel="noopener noreffer">IOC</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#aop" target="_blank" rel="noopener noreffer">AOP</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#uml" target="_blank" rel="noopener noreffer">UML</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%be%ae%e6%9c%8d%e5%8a%a1%e6%80%9d%e6%83%b3" target="_blank" rel="noopener noreffer">微服务思想</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%ba%b7%e5%a8%81%e5%ae%9a%e5%be%8b" target="_blank" rel="noopener noreffer">康威定律</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%bf%90%e7%bb%b4--%e7%bb%9f%e8%ae%a1--%e6%8a%80%e6%9c%af%e6%94%af%e6%8c%81" target="_blank" rel="noopener noreffer">运维 &amp; 统计 &amp; 技术支持</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%b8%b8%e8%a7%84%e7%9b%91%e6%8e%a7" target="_blank" rel="noopener noreffer">常规监控</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#apm" target="_blank" rel="noopener noreffer">APM</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%bb%9f%e8%ae%a1%e5%88%86%e6%9e%90" target="_blank" rel="noopener noreffer">统计分析</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%8c%81%e7%bb%ad%e9%9b%86%e6%88%90cicd" target="_blank" rel="noopener noreffer">持续集成(CI/CD)</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#jenkins" target="_blank" rel="noopener noreffer">Jenkins</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%8e%af%e5%a2%83%e5%88%86%e7%a6%bb" target="_blank" rel="noopener noreffer">环境分离</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%87%aa%e5%8a%a8%e5%8c%96%e8%bf%90%e7%bb%b4" target="_blank" rel="noopener noreffer">自动化运维</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#ansible" target="_blank" rel="noopener noreffer">Ansible</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#puppet" target="_blank" rel="noopener noreffer">puppet</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#chef" target="_blank" rel="noopener noreffer">chef</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%b5%8b%e8%af%95" target="_blank" rel="noopener noreffer">测试</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#tdd-%e7%90%86%e8%ae%ba" target="_blank" rel="noopener noreffer">TDD 理论</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%8d%95%e5%85%83%e6%b5%8b%e8%af%95" target="_blank" rel="noopener noreffer">单元测试</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%8e%8b%e5%8a%9b%e6%b5%8b%e8%af%95" target="_blank" rel="noopener noreffer">压力测试</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%85%a8%e9%93%be%e8%b7%af%e5%8e%8b%e6%b5%8b" target="_blank" rel="noopener noreffer">全链路压测</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#ab-%e7%81%b0%e5%ba%a6%e8%93%9d%e7%bb%bf%e6%b5%8b%e8%af%95" target="_blank" rel="noopener noreffer">A/B 、灰度、蓝绿测试</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%99%9a%e6%8b%9f%e5%8c%96" target="_blank" rel="noopener noreffer">虚拟化</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#kvm" target="_blank" rel="noopener noreffer">KVM</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#xen" target="_blank" rel="noopener noreffer">Xen</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#openvz" target="_blank" rel="noopener noreffer">OpenVZ</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%ae%b9%e5%99%a8%e6%8a%80%e6%9c%af" target="_blank" rel="noopener noreffer">容器技术</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#docker" target="_blank" rel="noopener noreffer">Docker</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%ba%91%e6%8a%80%e6%9c%af" target="_blank" rel="noopener noreffer">云技术</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#openstack" target="_blank" rel="noopener noreffer">OpenStack</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#devops" target="_blank" rel="noopener noreffer">DevOps</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%96%87%e6%a1%a3%e7%ae%a1%e7%90%86" target="_blank" rel="noopener noreffer">文档管理</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%b8%ad%e9%97%b4%e4%bb%b6" target="_blank" rel="noopener noreffer">中间件</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#web-server" target="_blank" rel="noopener noreffer">Web Server</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#nginx" target="_blank" rel="noopener noreffer">Nginx</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#openresty" target="_blank" rel="noopener noreffer">OpenResty</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#Tengine" target="_blank" rel="noopener noreffer">Tengine</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#apache-httpd" target="_blank" rel="noopener noreffer">Apache Httpd</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#tomcat" target="_blank" rel="noopener noreffer">Tomcat</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%9e%b6%e6%9e%84%e5%8e%9f%e7%90%86" target="_blank" rel="noopener noreffer">架构原理</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%b0%83%e4%bc%98%e6%96%b9%e6%a1%88" target="_blank" rel="noopener noreffer">调优方案</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#jetty" target="_blank" rel="noopener noreffer">Jetty</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%bc%93%e5%ad%98" target="_blank" rel="noopener noreffer">缓存</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%9c%ac%e5%9c%b0%e7%bc%93%e5%ad%98" target="_blank" rel="noopener noreffer">本地缓存</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%ae%a2%e6%88%b7%e7%ab%af%e7%bc%93%e5%ad%98" target="_blank" rel="noopener noreffer">客户端缓存</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%9c%8d%e5%8a%a1%e7%ab%af%e7%bc%93%e5%ad%98" target="_blank" rel="noopener noreffer">服务端缓存</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#web%e7%bc%93%e5%ad%98" target="_blank" rel="noopener noreffer">Web缓存</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#memcached" target="_blank" rel="noopener noreffer">Memcached</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#redis" target="_blank" rel="noopener noreffer">Redis</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%9e%b6%e6%9e%84" target="_blank" rel="noopener noreffer">架构</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%9b%9e%e6%94%b6%e7%ad%96%e7%95%a5" target="_blank" rel="noopener noreffer">回收策略</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#tair" target="_blank" rel="noopener noreffer">Tair</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%b6%88%e6%81%af%e9%98%9f%e5%88%97" target="_blank" rel="noopener noreffer">消息队列</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%b6%88%e6%81%af%e6%80%bb%e7%ba%bf" target="_blank" rel="noopener noreffer">消息总线</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%b6%88%e6%81%af%e7%9a%84%e9%a1%ba%e5%ba%8f" target="_blank" rel="noopener noreffer">消息的顺序</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#rabbitmq" target="_blank" rel="noopener noreffer">RabbitMQ</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#rocketmq" target="_blank" rel="noopener noreffer">RocketMQ</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#activemq" target="_blank" rel="noopener noreffer">ActiveMQ</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#kafka" target="_blank" rel="noopener noreffer">Kafka</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#redis-%e6%b6%88%e6%81%af%e6%8e%a8%e9%80%81" target="_blank" rel="noopener noreffer">Redis 消息推送</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#zeromq" target="_blank" rel="noopener noreffer">ZeroMQ</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%ae%9a%e6%97%b6%e8%b0%83%e5%ba%a6" target="_blank" rel="noopener noreffer">定时调度</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%8d%95%e6%9c%ba%e5%ae%9a%e6%97%b6%e8%b0%83%e5%ba%a6" target="_blank" rel="noopener noreffer">单机定时调度</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%88%86%e5%b8%83%e5%bc%8f%e5%ae%9a%e6%97%b6%e8%b0%83%e5%ba%a6" target="_blank" rel="noopener noreffer">分布式定时调度</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#rpc" target="_blank" rel="noopener noreffer">RPC</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#dubbo" target="_blank" rel="noopener noreffer">Dubbo</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#thrift" target="_blank" rel="noopener noreffer">Thrift</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#grpc" target="_blank" rel="noopener noreffer">gRPC</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%95%b0%e6%8d%ae%e5%ba%93%e4%b8%ad%e9%97%b4%e4%bb%b6" target="_blank" rel="noopener noreffer">数据库中间件</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#sharding-jdbc" target="_blank" rel="noopener noreffer">Sharding Jdbc</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%97%a5%e5%bf%97%e7%b3%bb%e7%bb%9f" target="_blank" rel="noopener noreffer">日志系统</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%97%a5%e5%bf%97%e6%90%9c%e9%9b%86" target="_blank" rel="noopener noreffer">日志搜集</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e9%85%8d%e7%bd%ae%e4%b8%ad%e5%bf%83" target="_blank" rel="noopener noreffer">配置中心</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#api-%e7%bd%91%e5%85%b3" target="_blank" rel="noopener noreffer">API 网关</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%bd%91%e7%bb%9c" target="_blank" rel="noopener noreffer">网络</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%8d%8f%e8%ae%ae" target="_blank" rel="noopener noreffer">协议</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#osi-%e4%b8%83%e5%b1%82%e5%8d%8f%e8%ae%ae" target="_blank" rel="noopener noreffer">OSI 七层协议</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#tcpip" target="_blank" rel="noopener noreffer">TCP/IP</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#http" target="_blank" rel="noopener noreffer">HTTP</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#http20" target="_blank" rel="noopener noreffer">HTTP2.0</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#https" target="_blank" rel="noopener noreffer">HTTPS</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%bd%91%e7%bb%9c%e6%a8%a1%e5%9e%8b" target="_blank" rel="noopener noreffer">网络模型</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#epoll" target="_blank" rel="noopener noreffer">Epoll</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#java-nio" target="_blank" rel="noopener noreffer">Java NIO</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#kqueue" target="_blank" rel="noopener noreffer">kqueue</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%bf%9e%e6%8e%a5%e5%92%8c%e7%9f%ad%e8%bf%9e%e6%8e%a5" target="_blank" rel="noopener noreffer">连接和短连接</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%a1%86%e6%9e%b6" target="_blank" rel="noopener noreffer">框架</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e9%9b%b6%e6%8b%b7%e8%b4%9dzero-copy" target="_blank" rel="noopener noreffer">零拷贝（Zero-copy）</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%ba%8f%e5%88%97%e5%8c%96%e4%ba%8c%e8%bf%9b%e5%88%b6%e5%8d%8f%e8%ae%ae" target="_blank" rel="noopener noreffer">序列化(二进制协议)</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#hessian" target="_blank" rel="noopener noreffer">Hessian</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#protobuf" target="_blank" rel="noopener noreffer">Protobuf</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%95%b0%e6%8d%ae%e5%ba%93" target="_blank" rel="noopener noreffer">数据库</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%9f%ba%e7%a1%80%e7%90%86%e8%ae%ba" target="_blank" rel="noopener noreffer">基础理论</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%85%b3%e7%b3%bb%e6%95%b0%e6%8d%ae%e5%ba%93%e8%ae%be%e8%ae%a1%e7%9a%84%e4%b8%89%e5%a4%a7%e8%8c%83%e5%bc%8f" target="_blank" rel="noopener noreffer">关系数据库设计的三大范式</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#mysql" target="_blank" rel="noopener noreffer">MySQL</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%8e%9f%e7%90%86" target="_blank" rel="noopener noreffer">原理</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#innodb" target="_blank" rel="noopener noreffer">InnoDB</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%bc%98%e5%8c%96" target="_blank" rel="noopener noreffer">优化</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%b4%a2%e5%bc%95" target="_blank" rel="noopener noreffer">索引</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%81%9a%e9%9b%86%e7%b4%a2%e5%bc%95-%e9%9d%9e%e8%81%9a%e9%9b%86%e7%b4%a2%e5%bc%95" target="_blank" rel="noopener noreffer">聚集索引, 非聚集索引</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%a4%8d%e5%90%88%e7%b4%a2%e5%bc%95" target="_blank" rel="noopener noreffer">复合索引</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%87%aa%e9%80%82%e5%ba%94%e5%93%88%e5%b8%8c%e7%b4%a2%e5%bc%95ahi" target="_blank" rel="noopener noreffer">自适应哈希索引(AHI)</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#explain" target="_blank" rel="noopener noreffer">explain</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#nosql" target="_blank" rel="noopener noreffer">NoSQL</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#mongodb" target="_blank" rel="noopener noreffer">MongoDB</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#hbase" target="_blank" rel="noopener noreffer">Hbase</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%90%9c%e7%b4%a2%e5%bc%95%e6%93%8e" target="_blank" rel="noopener noreffer">搜索引擎</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%90%9c%e7%b4%a2%e5%bc%95%e6%93%8e%e5%8e%9f%e7%90%86" target="_blank" rel="noopener noreffer">搜索引擎原理</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#lucene" target="_blank" rel="noopener noreffer">Lucene</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#elasticsearch" target="_blank" rel="noopener noreffer">Elasticsearch</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#solr" target="_blank" rel="noopener noreffer">Solr</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#sphinx" target="_blank" rel="noopener noreffer">sphinx</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%80%a7%e8%83%bd" target="_blank" rel="noopener noreffer">性能</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%80%a7%e8%83%bd%e4%bc%98%e5%8c%96%e6%96%b9%e6%b3%95%e8%ae%ba" target="_blank" rel="noopener noreffer">性能优化方法论</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%ae%b9%e9%87%8f%e8%af%84%e4%bc%b0" target="_blank" rel="noopener noreffer">容量评估</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#cdn-%e7%bd%91%e7%bb%9c" target="_blank" rel="noopener noreffer">CDN 网络</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%bf%9e%e6%8e%a5%e6%b1%a0" target="_blank" rel="noopener noreffer">连接池</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%80%a7%e8%83%bd%e8%b0%83%e4%bc%98" target="_blank" rel="noopener noreffer">性能调优</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%a4%a7%e6%95%b0%e6%8d%ae" target="_blank" rel="noopener noreffer">大数据</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%b5%81%e5%bc%8f%e8%ae%a1%e7%ae%97" target="_blank" rel="noopener noreffer">流式计算</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#storm" target="_blank" rel="noopener noreffer">Storm</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#flink" target="_blank" rel="noopener noreffer">Flink</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#kafka-stream" target="_blank" rel="noopener noreffer">Kafka Stream</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%ba%94%e7%94%a8%e5%9c%ba%e6%99%af-1" target="_blank" rel="noopener noreffer">应用场景</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#hadoop" target="_blank" rel="noopener noreffer">Hadoop</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#hdfs" target="_blank" rel="noopener noreffer">HDFS</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#mapreduce" target="_blank" rel="noopener noreffer">MapReduce</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#yarn" target="_blank" rel="noopener noreffer">Yarn</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#spark" target="_blank" rel="noopener noreffer">Spark</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%ae%89%e5%85%a8" target="_blank" rel="noopener noreffer">安全</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#web-%e5%ae%89%e5%85%a8" target="_blank" rel="noopener noreffer">web 安全</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#xss" target="_blank" rel="noopener noreffer">XSS</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#csrf" target="_blank" rel="noopener noreffer">CSRF</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#sql-%e6%b3%a8%e5%85%a5" target="_blank" rel="noopener noreffer">SQL 注入</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#hash-dos" target="_blank" rel="noopener noreffer">Hash Dos</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%84%9a%e6%9c%ac%e6%b3%a8%e5%85%a5" target="_blank" rel="noopener noreffer">脚本注入</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%bc%8f%e6%b4%9e%e6%89%ab%e6%8f%8f%e5%b7%a5%e5%85%b7" target="_blank" rel="noopener noreffer">漏洞扫描工具</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e9%aa%8c%e8%af%81%e7%a0%81" target="_blank" rel="noopener noreffer">验证码</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#ddos-%e9%98%b2%e8%8c%83" target="_blank" rel="noopener noreffer">DDoS 防范</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%94%a8%e6%88%b7%e9%9a%90%e7%a7%81%e4%bf%a1%e6%81%af%e4%bf%9d%e6%8a%a4" target="_blank" rel="noopener noreffer">用户隐私信息保护</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%ba%8f%e5%88%97%e5%8c%96%e6%bc%8f%e6%b4%9e" target="_blank" rel="noopener noreffer">序列化漏洞</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%8a%a0%e5%af%86%e8%a7%a3%e5%af%86" target="_blank" rel="noopener noreffer">加密解密</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%af%b9%e7%a7%b0%e5%8a%a0%e5%af%86" target="_blank" rel="noopener noreffer">对称加密</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%93%88%e5%b8%8c%e7%ae%97%e6%b3%95" target="_blank" rel="noopener noreffer">哈希算法</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e9%9d%9e%e5%af%b9%e7%a7%b0%e5%8a%a0%e5%af%86" target="_blank" rel="noopener noreffer">非对称加密</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%9c%8d%e5%8a%a1%e5%99%a8%e5%ae%89%e5%85%a8" target="_blank" rel="noopener noreffer">服务器安全</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%95%b0%e6%8d%ae%e5%ae%89%e5%85%a8" target="_blank" rel="noopener noreffer">数据安全</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%95%b0%e6%8d%ae%e5%a4%87%e4%bb%bd" target="_blank" rel="noopener noreffer">数据备份</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%bd%91%e7%bb%9c%e9%9a%94%e7%a6%bb" target="_blank" rel="noopener noreffer">网络隔离</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%86%85%e5%a4%96%e7%bd%91%e5%88%86%e7%a6%bb" target="_blank" rel="noopener noreffer">内外网分离</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%99%bb%e5%bd%95%e8%b7%b3%e6%9d%bf%e6%9c%ba" target="_blank" rel="noopener noreffer">登录跳板机</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%8e%88%e6%9d%83%e8%ae%a4%e8%af%81" target="_blank" rel="noopener noreffer">授权、认证</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#rbac" target="_blank" rel="noopener noreffer">RBAC</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#oauth20" target="_blank" rel="noopener noreffer">OAuth2.0</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%8f%8c%e5%9b%a0%e7%b4%a0%e8%ae%a4%e8%af%812fa" target="_blank" rel="noopener noreffer">双因素认证（2FA）</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%8d%95%e7%82%b9%e7%99%bb%e5%bd%95sso" target="_blank" rel="noopener noreffer">单点登录(SSO)</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%b8%b8%e7%94%a8%e5%bc%80%e6%ba%90%e6%a1%86%e6%9e%b6" target="_blank" rel="noopener noreffer">常用开源框架</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%bc%80%e6%ba%90%e5%8d%8f%e8%ae%ae" target="_blank" rel="noopener noreffer">开源协议</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%97%a5%e5%bf%97%e6%a1%86%e6%9e%b6" target="_blank" rel="noopener noreffer">日志框架</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#log4jlog4j2" target="_blank" rel="noopener noreffer">Log4j、Log4j2</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#logback" target="_blank" rel="noopener noreffer">Logback</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#orm" target="_blank" rel="noopener noreffer">ORM</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%bd%91%e7%bb%9c%e6%a1%86%e6%9e%b6" target="_blank" rel="noopener noreffer">网络框架</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#web-%e6%a1%86%e6%9e%b6" target="_blank" rel="noopener noreffer">Web 框架</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#spring-%e5%ae%b6%e6%97%8f" target="_blank" rel="noopener noreffer">Spring 家族</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%b7%a5%e5%85%b7%e6%a1%86%e6%9e%b6" target="_blank" rel="noopener noreffer">工具框架</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%88%86%e5%b8%83%e5%bc%8f%e8%ae%be%e8%ae%a1" target="_blank" rel="noopener noreffer">分布式设计</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%89%a9%e5%b1%95%e6%80%a7%e8%ae%be%e8%ae%a1" target="_blank" rel="noopener noreffer">扩展性设计</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%a8%b3%e5%ae%9a%e6%80%a7--%e9%ab%98%e5%8f%af%e7%94%a8" target="_blank" rel="noopener noreffer">稳定性 &amp; 高可用</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%a1%ac%e4%bb%b6%e8%b4%9f%e8%bd%bd%e5%9d%87%e8%a1%a1" target="_blank" rel="noopener noreffer">硬件负载均衡</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%bd%af%e4%bb%b6%e8%b4%9f%e8%bd%bd%e5%9d%87%e8%a1%a1" target="_blank" rel="noopener noreffer">软件负载均衡</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e9%99%90%e6%b5%81" target="_blank" rel="noopener noreffer">限流</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%ba%94%e7%94%a8%e5%b1%82%e5%ae%b9%e7%81%be" target="_blank" rel="noopener noreffer">应用层容灾</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%b7%a8%e6%9c%ba%e6%88%bf%e5%ae%b9%e7%81%be" target="_blank" rel="noopener noreffer">跨机房容灾</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%ae%b9%e7%81%be%e6%bc%94%e7%bb%83%e6%b5%81%e7%a8%8b" target="_blank" rel="noopener noreffer">容灾演练流程</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%b9%b3%e6%bb%91%e5%90%af%e5%8a%a8" target="_blank" rel="noopener noreffer">平滑启动</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%95%b0%e6%8d%ae%e5%ba%93%e6%89%a9%e5%b1%95" target="_blank" rel="noopener noreffer">数据库扩展</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%af%bb%e5%86%99%e5%88%86%e7%a6%bb%e6%a8%a1%e5%bc%8f" target="_blank" rel="noopener noreffer">读写分离模式</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%88%86%e7%89%87%e6%a8%a1%e5%bc%8f" target="_blank" rel="noopener noreffer">分片模式</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%9c%8d%e5%8a%a1%e6%b2%bb%e7%90%86" target="_blank" rel="noopener noreffer">服务治理</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%9c%8d%e5%8a%a1%e6%b3%a8%e5%86%8c%e4%b8%8e%e5%8f%91%e7%8e%b0" target="_blank" rel="noopener noreffer">服务注册与发现</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%9c%8d%e5%8a%a1%e8%b7%af%e7%94%b1%e6%8e%a7%e5%88%b6" target="_blank" rel="noopener noreffer">服务路由控制</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%88%86%e5%b8%83%e5%bc%8f%e4%b8%80%e8%87%b4" target="_blank" rel="noopener noreffer">分布式一致</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#cap-%e4%b8%8e-base-%e7%90%86%e8%ae%ba" target="_blank" rel="noopener noreffer">CAP 与 BASE 理论</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%88%86%e5%b8%83%e5%bc%8f%e9%94%81" target="_blank" rel="noopener noreffer">分布式锁</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%88%86%e5%b8%83%e5%bc%8f%e4%b8%80%e8%87%b4%e6%80%a7%e7%ae%97%e6%b3%95" target="_blank" rel="noopener noreffer">分布式一致性算法</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#paxos" target="_blank" rel="noopener noreffer">PAXOS</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#zab" target="_blank" rel="noopener noreffer">Zab</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#raft" target="_blank" rel="noopener noreffer">Raft</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#gossip" target="_blank" rel="noopener noreffer">Gossip</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%b8%a4%e9%98%b6%e6%ae%b5%e6%8f%90%e4%ba%a4%e5%a4%9a%e9%98%b6%e6%ae%b5%e6%8f%90%e4%ba%a4" target="_blank" rel="noopener noreffer">两阶段提交、多阶段提交</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%b9%82%e7%ad%89" target="_blank" rel="noopener noreffer">幂等</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%88%86%e5%b8%83%e5%bc%8f%e4%b8%80%e8%87%b4%e6%96%b9%e6%a1%88" target="_blank" rel="noopener noreffer">分布式一致方案</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%88%86%e5%b8%83%e5%bc%8f-leader-%e8%8a%82%e7%82%b9%e9%80%89%e4%b8%be" target="_blank" rel="noopener noreffer">分布式 Leader 节点选举</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#tcctryconfirmcancel-%e6%9f%94%e6%80%a7%e4%ba%8b%e5%8a%a1" target="_blank" rel="noopener noreffer">TCC(Try/Confirm/Cancel) 柔性事务</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%88%86%e5%b8%83%e5%bc%8f%e6%96%87%e4%bb%b6%e7%b3%bb%e7%bb%9f" target="_blank" rel="noopener noreffer">分布式文件系统</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%94%af%e4%b8%80id-%e7%94%9f%e6%88%90" target="_blank" rel="noopener noreffer">唯一ID 生成</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%85%a8%e5%b1%80%e5%94%af%e4%b8%80id" target="_blank" rel="noopener noreffer">全局唯一ID</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%b8%80%e8%87%b4%e6%80%a7hash%e7%ae%97%e6%b3%95" target="_blank" rel="noopener noreffer">一致性Hash算法</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%ae%be%e8%ae%a1%e6%80%9d%e6%83%b3--%e5%bc%80%e5%8f%91%e6%a8%a1%e5%bc%8f" target="_blank" rel="noopener noreffer">设计思想 &amp; 开发模式</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#ddddomain-driven-design---%e9%a2%86%e5%9f%9f%e9%a9%b1%e5%8a%a8%e8%ae%be%e8%ae%a1" target="_blank" rel="noopener noreffer">DDD(Domain-driven Design - 领域驱动设计)</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%91%bd%e4%bb%a4%e6%9f%a5%e8%af%a2%e8%81%8c%e8%b4%a3%e5%88%86%e7%a6%bbcqrs" target="_blank" rel="noopener noreffer">命令查询职责分离(CQRS)</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%b4%ab%e8%a1%80%e5%85%85%e8%a1%80%e6%a8%a1%e5%9e%8b" target="_blank" rel="noopener noreffer">贫血，充血模型</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#actor-%e6%a8%a1%e5%bc%8f" target="_blank" rel="noopener noreffer">Actor 模式</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%93%8d%e5%ba%94%e5%bc%8f%e7%bc%96%e7%a8%8b" target="_blank" rel="noopener noreffer">响应式编程</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#reactor" target="_blank" rel="noopener noreffer">Reactor</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#rxjava" target="_blank" rel="noopener noreffer">RxJava</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#vertx" target="_blank" rel="noopener noreffer">Vert.x</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#dodaf20" target="_blank" rel="noopener noreffer">DODAF2.0</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#serverless" target="_blank" rel="noopener noreffer">Serverless</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#service-mesh" target="_blank" rel="noopener noreffer">Service Mesh</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e9%a1%b9%e7%9b%ae%e7%ae%a1%e7%90%86" target="_blank" rel="noopener noreffer">项目管理</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%9e%b6%e6%9e%84%e8%af%84%e5%ae%a1" target="_blank" rel="noopener noreffer">架构评审</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e9%87%8d%e6%9e%84" target="_blank" rel="noopener noreffer">重构</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%bb%a3%e7%a0%81%e8%a7%84%e8%8c%83" target="_blank" rel="noopener noreffer">代码规范</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%bb%a3%e7%a0%81-review" target="_blank" rel="noopener noreffer">代码 Review</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#rup" target="_blank" rel="noopener noreffer">RUP</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%9c%8b%e6%9d%bf%e7%ae%a1%e7%90%86" target="_blank" rel="noopener noreffer">看板管理</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#scrum" target="_blank" rel="noopener noreffer">SCRUM</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%95%8f%e6%8d%b7%e5%bc%80%e5%8f%91" target="_blank" rel="noopener noreffer">敏捷开发</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%9e%81%e9%99%90%e7%bc%96%e7%a8%8bxp" target="_blank" rel="noopener noreffer">极限编程（XP）</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%bb%93%e5%af%b9%e7%bc%96%e7%a8%8b" target="_blank" rel="noopener noreffer">结对编程</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#pdca-%e5%be%aa%e7%8e%af%e8%b4%a8%e9%87%8f%e7%ae%a1%e7%90%86" target="_blank" rel="noopener noreffer">PDCA 循环质量管理</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#fmea%e7%ae%a1%e7%90%86%e6%a8%a1%e5%bc%8f" target="_blank" rel="noopener noreffer">FMEA管理模式</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e9%80%9a%e7%94%a8%e4%b8%9a%e5%8a%a1%e6%9c%af%e8%af%ad" target="_blank" rel="noopener noreffer">通用业务术语</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%8a%80%e6%9c%af%e8%b6%8b%e5%8a%bf" target="_blank" rel="noopener noreffer">技术趋势</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%94%bf%e7%ad%96%e6%b3%95%e8%a7%84" target="_blank" rel="noopener noreffer">政策、法规</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%b3%95%e5%be%8b" target="_blank" rel="noopener noreffer">法律</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%b8%a5%e6%a0%bc%e9%81%b5%e5%ae%88%e5%88%91%e6%b3%95253%e6%b3%95%e6%9d%a1" target="_blank" rel="noopener noreffer">严格遵守刑法253法条</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%9e%b6%e6%9e%84%e5%b8%88%e7%b4%a0%e8%b4%a8" target="_blank" rel="noopener noreffer">架构师素质</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%9b%a2%e9%98%9f%e7%ae%a1%e7%90%86" target="_blank" rel="noopener noreffer">团队管理</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%8b%9b%e8%81%98" target="_blank" rel="noopener noreffer">招聘</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%b5%84%e8%ae%af" target="_blank" rel="noopener noreffer">资讯</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%a1%8c%e4%b8%9a%e8%b5%84%e8%ae%af" target="_blank" rel="noopener noreffer">行业资讯</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%85%ac%e4%bc%97%e5%8f%b7%e5%88%97%e8%a1%a8" target="_blank" rel="noopener noreffer">公众号列表</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%8d%9a%e5%ae%a2" target="_blank" rel="noopener noreffer">博客</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%9b%a2%e9%98%9f%e5%8d%9a%e5%ae%a2" target="_blank" rel="noopener noreffer">团队博客</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%b8%aa%e4%ba%ba%e5%8d%9a%e5%ae%a2" target="_blank" rel="noopener noreffer">个人博客</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%bb%bc%e5%90%88%e9%97%a8%e6%88%b7%e7%a4%be%e5%8c%ba" target="_blank" rel="noopener noreffer">综合门户、社区</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e9%97%ae%e7%ad%94%e8%ae%a8%e8%ae%ba%e7%b1%bb%e7%a4%be%e5%8c%ba" target="_blank" rel="noopener noreffer">问答、讨论类社区</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%a1%8c%e4%b8%9a%e6%95%b0%e6%8d%ae%e5%88%86%e6%9e%90" target="_blank" rel="noopener noreffer">行业数据分析</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%b8%93%e9%a1%b9%e7%bd%91%e7%ab%99" target="_blank" rel="noopener noreffer">专项网站</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%85%b6%e4%bb%96%e7%b1%bb" target="_blank" rel="noopener noreffer">其他类</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%8e%a8%e8%8d%90%e5%8f%82%e8%80%83%e4%b9%a6" target="_blank" rel="noopener noreffer">推荐参考书</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%9c%a8%e7%ba%bf%e7%94%b5%e5%ad%90%e4%b9%a6" target="_blank" rel="noopener noreffer">在线电子书</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%ba%b8%e8%b4%a8%e4%b9%a6" target="_blank" rel="noopener noreffer">纸质书</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%bc%80%e5%8f%91%e6%96%b9%e9%9d%a2" target="_blank" rel="noopener noreffer">开发方面</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%9e%b6%e6%9e%84%e6%96%b9%e9%9d%a2" target="_blank" rel="noopener noreffer">架构方面</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%8a%80%e6%9c%af%e7%ae%a1%e7%90%86%e6%96%b9%e9%9d%a2" target="_blank" rel="noopener noreffer">技术管理方面</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%9f%ba%e7%a1%80%e7%90%86%e8%ae%ba-1" target="_blank" rel="noopener noreffer">基础理论</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%b7%a5%e5%85%b7%e6%96%b9%e9%9d%a2" target="_blank" rel="noopener noreffer">工具方面</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%a4%a7%e6%95%b0%e6%8d%ae%e6%96%b9%e9%9d%a2" target="_blank" rel="noopener noreffer">大数据方面</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%8a%80%e6%9c%af%e8%b5%84%e6%ba%90" target="_blank" rel="noopener noreffer">技术资源</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%bc%80%e6%ba%90%e8%b5%84%e6%ba%90" target="_blank" rel="noopener noreffer">开源资源</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%89%8b%e5%86%8c%e6%96%87%e6%a1%a3%e6%95%99%e7%a8%8b" target="_blank" rel="noopener noreffer">手册、文档、教程</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%9c%a8%e7%ba%bf%e8%af%be%e5%a0%82" target="_blank" rel="noopener noreffer">在线课堂</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%bc%9a%e8%ae%ae%e6%b4%bb%e5%8a%a8" target="_blank" rel="noopener noreffer">会议、活动</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%b8%b8%e7%94%a8app" target="_blank" rel="noopener noreffer">常用APP</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%89%be%e5%b7%a5%e4%bd%9c" target="_blank" rel="noopener noreffer">找工作</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%b7%a5%e5%85%b7" target="_blank" rel="noopener noreffer">工具</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%bb%a3%e7%a0%81%e6%89%98%e7%ae%a1" target="_blank" rel="noopener noreffer">代码托管</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%96%87%e4%bb%b6%e6%9c%8d%e5%8a%a1" target="_blank" rel="noopener noreffer">文件服务</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%bb%bc%e5%90%88%e4%ba%91%e6%9c%8d%e5%8a%a1%e5%95%86" target="_blank" rel="noopener noreffer">综合云服务商</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#vps" target="_blank" rel="noopener noreffer">VPS</a></li>
</ul>
</li>
</ul>
</li>
</ul>
<p><strong>（Toc generated by <a href="https://github.com/xingshaocheng/simple-php-github-toc" target="_blank" rel="noopener noreffer">simple-php-github-toc</a> ）</strong></p>
<h1 id="数据结构">数据结构</h1>
<h2 id="队列">队列</h2>
<ul>
<li>
<p><a href="https://www.cnblogs.com/lemon-flm/p/7877898.html" target="_blank" rel="noopener noreffer">《java队列——queue详细分析》</a></p>
<ul>
<li>非阻塞队列：ConcurrentLinkedQueue(无界线程安全)，采用CAS机制（compareAndSwapObject原子操作）。</li>
<li>阻塞队列：ArrayBlockingQueue(有界)、LinkedBlockingQueue（无界）、DelayQueue、PriorityBlockingQueue，采用锁机制；使用 ReentrantLock 锁。</li>
</ul>
</li>
<li>
<p><a href="https://www.cnblogs.com/mantu/p/5802393.html" target="_blank" rel="noopener noreffer">《LinkedList、ConcurrentLinkedQueue、LinkedBlockingQueue对比分析》</a></p>
</li>
</ul>
<h2 id="集合">集合</h2>
<ul>
<li><a href="https://blog.csdn.net/qq_33642117/article/details/52040345" target="_blank" rel="noopener noreffer">《Java Set集合的详解》</a></li>
</ul>
<h2 id="链表数组">链表、数组</h2>
<ul>
<li><a href="https://blog.csdn.net/wz249863091/article/details/52853360" target="_blank" rel="noopener noreffer">《Java集合详解&ndash;什么是List》</a></li>
</ul>
<h2 id="字典关联数组">字典、关联数组</h2>
<ul>
<li><a href="https://baike.xsoftlab.net/view/250.html" target="_blank" rel="noopener noreffer">《Java map 详解 - 用法、遍历、排序、常用API等》</a></li>
</ul>
<h2 id="栈">栈</h2>
<ul>
<li><a href="https://blog.csdn.net/javazejian/article/details/53362993" target="_blank" rel="noopener noreffer">《java数据结构与算法之栈（Stack）设计与实现》</a></li>
<li><a href="http://www.runoob.com/java/java-stack-class.html" target="_blank" rel="noopener noreffer">《Java Stack 类》</a></li>
<li><a href="https://blog.csdn.net/f2006116/article/details/51375225" target="_blank" rel="noopener noreffer">《java stack的详细实现分析》</a>
<ul>
<li>Stack 是线程安全的。</li>
<li>内部使用数组保存数据，不够时翻倍。</li>
</ul>
</li>
</ul>
<h2 id="树">树</h2>
<h3 id="二叉树">二叉树</h3>
<p>每个节点最多有两个叶子节点。</p>
<ul>
<li><a href="https://blog.csdn.net/cai2016/article/details/52589952" target="_blank" rel="noopener noreffer">《二叉树》</a></li>
</ul>
<h3 id="完全二叉树">完全二叉树</h3>
<ul>
<li><a href="https://baike.baidu.com/item/%E5%AE%8C%E5%85%A8%E4%BA%8C%E5%8F%89%E6%A0%91/7773232?fr=aladdin" target="_blank" rel="noopener noreffer">《完全二叉树》</a>
<ul>
<li>叶节点只能出现在最下层和次下层，并且最下面一层的结点都集中在该层最左边的若干位置的二叉树。</li>
</ul>
</li>
</ul>
<h3 id="平衡二叉树">平衡二叉树</h3>
<p>左右两个子树的高度差的绝对值不超过1，并且左右两个子树都是一棵平衡二叉树。</p>
<ul>
<li><a href="http://www.cnblogs.com/polly333/p/4798944.html" target="_blank" rel="noopener noreffer">《浅谈数据结构-平衡二叉树》</a></li>
<li><a href="http://www.cnblogs.com/yangecnu/p/Introduce-2-3-Search-Tree.html" target="_blank" rel="noopener noreffer">《浅谈算法和数据结构: 八 平衡查找树之2-3树》</a></li>
</ul>
<h3 id="二叉查找树bst">二叉查找树（BST）</h3>
<p>二叉查找树（Binary Search Tree），也称有序二叉树（ordered binary tree）,排序二叉树（sorted binary tree）。</p>
<ul>
<li><a href="http://www.cnblogs.com/yangecnu/p/Introduce-Binary-Search-Tree.html" target="_blank" rel="noopener noreffer">《浅谈算法和数据结构: 七 二叉查找树》</a></li>
</ul>
<h3 id="红黑树">红黑树</h3>
<ul>
<li><a href="https://blog.csdn.net/sun_tttt/article/details/65445754" target="_blank" rel="noopener noreffer">《最容易懂得红黑树》</a>
<ul>
<li>添加阶段后，左旋或者右旋从而再次达到平衡。</li>
</ul>
</li>
<li><a href="http://www.cnblogs.com/yangecnu/p/Introduce-Red-Black-Tree.html" target="_blank" rel="noopener noreffer">《浅谈算法和数据结构: 九 平衡查找树之红黑树》</a></li>
</ul>
<h3 id="bbb树">B，B+，B*树</h3>
<p>MySQL是基于B+树聚集索引组织表</p>
<ul>
<li><a href="https://blog.csdn.net/aqzwss/article/details/53074186" target="_blank" rel="noopener noreffer">《B-树，B+树，B*树详解》</a></li>
<li><a href="https://blog.csdn.net/bigtree_3721/article/details/73632405" target="_blank" rel="noopener noreffer">《B-树，B+树与B*树的优缺点比较》</a>
<ul>
<li>B+树的叶子节点链表结构相比于 B-树便于扫库，和范围检索。</li>
</ul>
</li>
</ul>
<h3 id="lsm-树">LSM 树</h3>
<p>LSM（Log-Structured Merge-Trees）和 B+ 树相比，是牺牲了部分读的性能来换取写的性能(通过批量写入)，实现读写之间的平衡。
Hbase、LevelDB、Tair（Long DB）、nessDB 采用 LSM 树的结构。LSM可以快速建立索引。</p>
<ul>
<li>
<p><a href="https://blog.csdn.net/dbanote/article/details/8897599" target="_blank" rel="noopener noreffer">《LSM树 VS B+树》</a></p>
<ul>
<li>B+ 树读性能好，但由于需要有序结构，当key比较分散时，磁盘寻道频繁，造成写性能较差。</li>
<li>LSM 是将一个大树拆分成N棵小树，先写到内存（无寻道问题，性能高），在内存中构建一颗有序小树（有序树），随着小树越来越大，内存的小树会flush到磁盘上。当读时，由于不知道数据在哪棵小树上，因此必须遍历（二分查找）所有的小树，但在每颗小树内部数据是有序的。</li>
</ul>
</li>
<li>
<p><a href="https://blog.csdn.net/u014774781/article/details/52105708" target="_blank" rel="noopener noreffer">《LSM树（Log-Structured Merge Tree）存储引擎》</a></p>
<ul>
<li>极端的说，基于LSM树实现的HBase的写性能比MySQL高了一个数量级，读性能低了一个数量级。</li>
<li>优化方式：Bloom filter 替代二分查找；compact 小数位大树，提高查询性能。</li>
<li>Hbase 中，内存中达到一定阈值后，整体flush到磁盘上、形成一个文件（B+数），HDFS不支持update操作，所以Hbase做整体flush而不是merge update。flush到磁盘上的小树，定期会合并成一个大树。</li>
</ul>
</li>
</ul>
<h2 id="bitset">BitSet</h2>
<p>经常用于大规模数据的排重检查。</p>
<ul>
<li><a href="http://www.runoob.com/java/java-bitset-class.html" target="_blank" rel="noopener noreffer">《Java Bitset类》</a></li>
<li><a href="https://blog.csdn.net/caiandyong/article/details/51581160" target="_blank" rel="noopener noreffer">《Java BitSet（位集）》</a></li>
</ul>
<h1 id="常用算法">常用算法</h1>
<ul>
<li><a href="https://blog.csdn.net/gane_cheng/article/details/52652705" target="_blank" rel="noopener noreffer">《常见排序算法及对应的时间复杂度和空间复杂度》</a></li>
</ul>
<h2 id="排序查找算法">排序、查找算法</h2>
<ul>
<li><a href="https://blog.csdn.net/gane_cheng/article/details/52652705" target="_blank" rel="noopener noreffer">《常见排序算法及对应的时间复杂度和空间复杂度》</a></li>
</ul>
<h3 id="选择排序">选择排序</h3>
<ul>
<li><a href="https://www.cnblogs.com/shen-hua/p/5424059.html" target="_blank" rel="noopener noreffer">《Java中的经典算法之选择排序（SelectionSort）》</a>
<ul>
<li>每一趟从待排序的记录中选出最小的元素，顺序放在已排好序的序列最后，直到全部记录排序完毕。</li>
</ul>
</li>
</ul>
<h3 id="冒泡排序">冒泡排序</h3>
<ul>
<li><a href="https://blog.csdn.net/shuaizai88/article/details/73250615" target="_blank" rel="noopener noreffer">《冒泡排序的2种写法》</a>
<ul>
<li>相邻元素前后交换、把最大的排到最后。</li>
<li>时间复杂度 O(n²)</li>
</ul>
</li>
</ul>
<h3 id="插入排序">插入排序</h3>
<ul>
<li><a href="https://www.cnblogs.com/hapjin/p/5517667.html" target="_blank" rel="noopener noreffer">《排序算法总结之插入排序》</a></li>
</ul>
<h3 id="快速排序">快速排序</h3>
<ul>
<li><a href="http://developer.51cto.com/art/201403/430986.htm" target="_blank" rel="noopener noreffer">《坐在马桶上看算法：快速排序》</a>
<ul>
<li>一侧比另外一侧都大或小。</li>
</ul>
</li>
</ul>
<h3 id="归并排序">归并排序</h3>
<ul>
<li><a href="http://www.cnblogs.com/chengxiao/p/6194356.html" target="_blank" rel="noopener noreffer">《图解排序算法(四)之归并排序》</a>
<ul>
<li>分而治之，分成小份排序，在合并(重建一个新空间进行复制)。</li>
</ul>
</li>
</ul>
<h3 id="希尔排序">希尔排序</h3>
<p>TODO</p>
<h3 id="堆排序">堆排序</h3>
<ul>
<li><a href="https://www.cnblogs.com/chengxiao/p/6129630.html" target="_blank" rel="noopener noreffer">《图解排序算法(三)之堆排序》</a>
<ul>
<li>排序过程就是构建最大堆的过程，最大堆：每个结点的值都大于或等于其左右孩子结点的值，堆顶元素是最大值。</li>
</ul>
</li>
</ul>
<h3 id="计数排序">计数排序</h3>
<ul>
<li><a href="https://www.cnblogs.com/suvllian/p/5495780.html" target="_blank" rel="noopener noreffer">《计数排序和桶排序》</a>
<ul>
<li>和桶排序过程比较像，差别在于桶的数量。</li>
</ul>
</li>
</ul>
<h3 id="桶排序">桶排序</h3>
<ul>
<li><a href="http://blog.51cto.com/ahalei/1362789" target="_blank" rel="noopener noreffer">《【啊哈！算法】最快最简单的排序——桶排序》</a></li>
<li><a href="https://blog.csdn.net/sunjinshengli/article/details/70738527" target="_blank" rel="noopener noreffer">《排序算法（三）：计数排序与桶排序》</a>
<ul>
<li>桶排序将[0,1)区间划分为n个相同的大小的子区间，这些子区间被称为桶。</li>
<li>每个桶单独进行排序，然后再遍历每个桶。</li>
</ul>
</li>
</ul>
<h3 id="基数排序">基数排序</h3>
<p>按照个位、十位、百位、&hellip;依次来排。</p>
<ul>
<li><a href="https://blog.csdn.net/lemon_tree12138/article/details/51695211" target="_blank" rel="noopener noreffer">《排序算法系列：基数排序》</a></li>
<li><a href="https://www.cnblogs.com/skywang12345/p/3603669.html" target="_blank" rel="noopener noreffer">《基数排序》</a></li>
</ul>
<h3 id="二分查找">二分查找</h3>
<ul>
<li>
<p><a href="https://www.cnblogs.com/coderising/p/5708632.html" target="_blank" rel="noopener noreffer">《二分查找(java实现)》</a></p>
<ul>
<li>要求待查找的序列有序。</li>
<li>时间复杂度 O(logN)。</li>
</ul>
</li>
<li>
<p><a href="https://blog.csdn.net/maoyuanming0806/article/details/78176957" target="_blank" rel="noopener noreffer">《java实现二分查找-两种方式》</a></p>
<ul>
<li>while + 递归。</li>
</ul>
</li>
</ul>
<h3 id="java-中的排序工具">Java 中的排序工具</h3>
<ul>
<li><a href="https://blog.csdn.net/u011410529/article/details/56668545?locationnum=6&amp;fps=1" target="_blank" rel="noopener noreffer">《Arrays.sort和Collections.sort实现原理解析》</a>
<ul>
<li>Collections.sort算法调用的是合并排序。</li>
<li>Arrays.sort() 采用了2种排序算法 &ndash; 基本类型数据使用快速排序法，对象数组使用归并排序。</li>
</ul>
</li>
</ul>
<h2 id="布隆过滤器">布隆过滤器</h2>
<p>常用于大数据的排重，比如email，url 等。
核心原理：将每条数据通过计算产生一个指纹（一个字节或多个字节，但一定比原始数据要少很多），其中每一位都是通过随机计算获得，在将指纹映射到一个大的按位存储的空间中。注意：会有一定的错误率。
优点：空间和时间效率都很高。
缺点：随着存入的元素数量增加，误算率随之增加。</p>
<ul>
<li><a href="https://segmentfault.com/a/1190000002729689" target="_blank" rel="noopener noreffer">《布隆过滤器 &ndash; 空间效率很高的数据结构》</a></li>
<li><a href="https://blog.csdn.net/zdxiq000/article/details/57626464" target="_blank" rel="noopener noreffer">《大量数据去重：Bitmap和布隆过滤器(Bloom Filter)》</a></li>
<li><a href="https://blog.csdn.net/qq_30242609/article/details/71024458" target="_blank" rel="noopener noreffer">《基于Redis的布隆过滤器的实现》</a>
<ul>
<li>基于 Redis 的 Bitmap 数据结构。</li>
</ul>
</li>
<li><a href="https://blog.csdn.net/lemon_tree12138/article/details/47973715" target="_blank" rel="noopener noreffer">《网络爬虫：URL去重策略之布隆过滤器(BloomFilter)的使用》</a>
<ul>
<li>使用Java中的 BitSet 类 和 加权和hash算法。</li>
</ul>
</li>
</ul>
<h2 id="字符串比较">字符串比较</h2>
<h3 id="kmp-算法">KMP 算法</h3>
<p>KMP：Knuth-Morris-Pratt算法（简称KMP）
核心原理是利用一个“部分匹配表”，跳过已经匹配过的元素。</p>
<ul>
<li><a href="http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html" target="_blank" rel="noopener noreffer">《字符串匹配的KMP算法》</a></li>
</ul>
<h2 id="深度优先广度优先">深度优先、广度优先</h2>
<ul>
<li><a href="https://www.cnblogs.com/0kk470/p/7555033.html" target="_blank" rel="noopener noreffer">《广度优先搜索BFS和深度优先搜索DFS》</a></li>
</ul>
<h2 id="贪心算法">贪心算法</h2>
<ul>
<li><a href="https://www.cnblogs.com/MrSaver/p/8641971.html" target="_blank" rel="noopener noreffer">《算法：贪婪算法基础》</a></li>
<li><a href="https://blog.csdn.net/a345017062/article/details/52443781" target="_blank" rel="noopener noreffer">《常见算法及问题场景——贪心算法》</a></li>
</ul>
<h2 id="回溯算法">回溯算法</h2>
<ul>
<li><a href="https://blog.csdn.net/qfikh/article/details/51960331" target="_blank" rel="noopener noreffer">《 五大常用算法之四：回溯法》</a></li>
</ul>
<h2 id="剪枝算法">剪枝算法</h2>
<ul>
<li><a href="https://blog.csdn.net/luningcsdn/article/details/50930276" target="_blank" rel="noopener noreffer">《α-β剪枝算法》</a></li>
</ul>
<h2 id="动态规划">动态规划</h2>
<ul>
<li><a href="https://www.cnblogs.com/little-YTMM/p/5372680.html" target="_blank" rel="noopener noreffer">《详解动态规划——邹博讲动态规划》</a></li>
<li><a href="https://blog.csdn.net/yao_zi_jie/article/details/54580283" target="_blank" rel="noopener noreffer">《动态规划算法的个人理解》</a></li>
</ul>
<h2 id="朴素贝叶斯">朴素贝叶斯</h2>
<ul>
<li>
<p><a href="https://blog.csdn.net/amds123/article/details/70173402" target="_blank" rel="noopener noreffer">《带你搞懂朴素贝叶斯分类算法》</a></p>
<ul>
<li>P(B|A)=P(A|B)P(B)/P(A)</li>
</ul>
</li>
<li>
<p><a href="http://www.ruanyifeng.com/blog/2011/08/bayesian_inference_part_one.html" target="_blank" rel="noopener noreffer">《贝叶斯推断及其互联网应用1》</a></p>
</li>
<li>
<p><a href="http://www.ruanyifeng.com/blog/2011/08/bayesian_inference_part_two.html" target="_blank" rel="noopener noreffer">《贝叶斯推断及其互联网应用2》</a></p>
</li>
</ul>
<h2 id="推荐算法">推荐算法</h2>
<ul>
<li><a href="http://www.infoq.com/cn/articles/recommendation-algorithm-overview-part01" target="_blank" rel="noopener noreffer">《推荐算法综述》</a></li>
<li><a href="https://www.oschina.net/news/51297/top-10-open-source-recommendation-systems" target="_blank" rel="noopener noreffer">《TOP 10 开源的推荐系统简介》</a></li>
</ul>
<h2 id="最小生成树算法">最小生成树算法</h2>
<ul>
<li><a href="https://blog.csdn.net/luoshixian099/article/details/51908175" target="_blank" rel="noopener noreffer">《算法导论&ndash;最小生成树（Kruskal和Prim算法）》</a></li>
</ul>
<h2 id="最短路径算法">最短路径算法</h2>
<ul>
<li><a href="https://blog.csdn.net/qq_35644234/article/details/60870719" target="_blank" rel="noopener noreffer">《Dijkstra算法详解》</a></li>
</ul>
<h1 id="并发">并发</h1>
<h2 id="java-并发">Java 并发</h2>
<ul>
<li><a href="https://github.com/CL0610/Java-concurrency" target="_blank" rel="noopener noreffer">Java 并发知识合集</a></li>
<li><a href="https://github.com/CL0610/Java-concurrency/blob/master/Java%e5%b9%b6%e5%8f%91%e7%9f%a5%e8%af%86%e5%9b%be%e8%b0%b1.png" target="_blank" rel="noopener noreffer">JAVA并发知识图谱</a></li>
</ul>
<h2 id="多线程">多线程</h2>
<ul>
<li><a href="http://www.importnew.com/18459.html" target="_blank" rel="noopener noreffer">《40个Java多线程问题总结》</a></li>
</ul>
<h2 id="线程安全">线程安全</h2>
<ul>
<li><a href="https://www.cnblogs.com/zhanht/p/5450325.html" target="_blank" rel="noopener noreffer">《Java并发编程——线程安全及解决机制简介》</a></li>
</ul>
<h2 id="一致性事务">一致性、事务</h2>
<h3 id="事务-acid-特性">事务 ACID 特性</h3>
<ul>
<li><a href="https://blog.csdn.net/u012440687/article/details/52116108" target="_blank" rel="noopener noreffer">《数据库事务ACID特性》</a></li>
</ul>
<h3 id="事务的隔离级别">事务的隔离级别</h3>
<ul>
<li>
<p>未提交读：一个事务可以读取另一个未提交的数据，容易出现脏读的情况。</p>
</li>
<li>
<p>读提交：一个事务等另外一个事务提交之后才可以读取数据，但会出现不可重复读的情况（多次读取的数据不一致），读取过程中出现UPDATE操作，会多。（大多数数据库默认级别是RC，比如SQL Server，Oracle），读取的时候不可以修改。</p>
</li>
<li>
<p>可重复读： 同一个事务里确保每次读取的时候，获得的是同样的数据，但不保障原始数据被其他事务更新（幻读），Mysql InnoDB 就是这个级别。</p>
</li>
<li>
<p>序列化：所有事物串行处理（牺牲了效率）</p>
</li>
<li>
<p><a href="https://blog.csdn.net/qq_33290787/article/details/51924963" target="_blank" rel="noopener noreffer">《理解事务的4种隔离级别》</a></p>
</li>
<li>
<p><a href="https://www.cnblogs.com/z-sm/p/7245981.html" target="_blank" rel="noopener noreffer">数据库事务的四大特性及事务隔离级别</a></p>
</li>
<li>
<p><a href="http://blog.sina.com.cn/s/blog_499740cb0100ugs7.html" target="_blank" rel="noopener noreffer">《MySQL的InnoDB的幻读问题 》</a></p>
<ul>
<li>幻读的例子非常清楚。</li>
<li>通过 SELECT &hellip; FOR UPDATE 解决。</li>
</ul>
</li>
<li>
<p><a href="https://draveness.me/mysql-innodb" target="_blank" rel="noopener noreffer">《一篇文章带你读懂MySQL和InnoDB》</a></p>
<ul>
<li>图解脏读、不可重复读、幻读问题。</li>
</ul>
</li>
</ul>
<h3 id="mvcc">MVCC</h3>
<ul>
<li>
<p><a href="https://www.cnblogs.com/chenpingzhao/p/5065316.html" target="_blank" rel="noopener noreffer">《【mysql】关于innodb中MVCC的一些理解》</a></p>
<ul>
<li>innodb 中 MVCC 用在 Repeatable-Read 隔离级别。</li>
<li>MVCC 会产生幻读问题（更新时异常。）</li>
</ul>
</li>
<li>
<p><a href="https://blog.csdn.net/whoamiyang/article/details/51901888" target="_blank" rel="noopener noreffer">《轻松理解MYSQL MVCC 实现机制》</a></p>
<ul>
<li>通过隐藏版本列来实现 MVCC 控制，一列记录创建时间、一列记录删除时间，这里的时间</li>
<li>每次只操作比当前版本小（或等于）的 行。</li>
</ul>
</li>
</ul>
<h2 id="锁">锁</h2>
<h3 id="java中的锁和同步类">Java中的锁和同步类</h3>
<ul>
<li>
<p><a href="https://www.cnblogs.com/qifengshi/p/6831055.html" target="_blank" rel="noopener noreffer">《Java中的锁分类》</a></p>
<ul>
<li>主要包括 synchronized、ReentrantLock、和 ReadWriteLock。</li>
</ul>
</li>
<li>
<p><a href="https://www.cnblogs.com/waterystone/p/4920797.html" target="_blank" rel="noopener noreffer">《Java并发之AQS详解》</a></p>
</li>
<li>
<p><a href="http://cuisuqiang.iteye.com/blog/2020146" target="_blank" rel="noopener noreffer">《Java中信号量 Semaphore》</a></p>
<ul>
<li>有数量控制</li>
<li>申请用 acquire，申请不要则阻塞；释放用 release。</li>
</ul>
</li>
<li>
<p><a href="https://www.cnblogs.com/davidwang456/p/6094947.html" target="_blank" rel="noopener noreffer">《java开发中的Mutex vs Semaphore》</a></p>
<ul>
<li>简单的说 就是Mutex是排它的，只有一个可以获取到资源， Semaphore也具有排它性，但可以定义多个可以获取的资源的对象。</li>
</ul>
</li>
</ul>
<h3 id="公平锁--非公平锁">公平锁 &amp; 非公平锁</h3>
<p>公平锁的作用就是严格按照线程启动的顺序来执行的，不允许其他线程插队执行的；而非公平锁是允许插队的。</p>
<ul>
<li><a href="https://blog.csdn.net/EthanWhite/article/details/55508357" target="_blank" rel="noopener noreffer">《公平锁与非公平锁》</a>
<ul>
<li>默认情况下 ReentrantLock 和 synchronized 都是非公平锁。ReentrantLock 可以设置成公平锁。</li>
</ul>
</li>
</ul>
<h3 id="悲观锁">悲观锁</h3>
<p>悲观锁如果使用不当（锁的条数过多），会引起服务大面积等待。推荐优先使用乐观锁+重试。</p>
<ul>
<li>
<p><a href="https://www.cnblogs.com/zhiqian-ali/p/6200874.html" target="_blank" rel="noopener noreffer">《【MySQL】悲观锁&amp;乐观锁》</a></p>
<ul>
<li>乐观锁的方式：版本号+重试方式</li>
<li>悲观锁：通过 select &hellip; for update 进行行锁(不可读、不可写，share 锁可读不可写)。</li>
</ul>
</li>
<li>
<p><a href="https://www.cnblogs.com/Lawson/p/5008741.html" target="_blank" rel="noopener noreffer">《Mysql查询语句使用select.. for update导致的数据库死锁分析》</a></p>
<ul>
<li>mysql的innodb存储引擎实务锁虽然是锁行，但它内部是锁索引的。</li>
<li>锁相同数据的不同索引条件可能会引起死锁。</li>
</ul>
</li>
<li>
<p><a href="https://www.cnblogs.com/zejin2008/p/5262751.html" target="_blank" rel="noopener noreffer">《Mysql并发时经典常见的死锁原因及解决方法》</a></p>
</li>
</ul>
<h3 id="乐观锁--cas">乐观锁 &amp; CAS</h3>
<ul>
<li><a href="http://www.importnew.com/20472.html" target="_blank" rel="noopener noreffer">《乐观锁的一种实现方式——CAS》</a>
<ul>
<li>和MySQL乐观锁方式相似，只不过是通过和原值进行比较。</li>
</ul>
</li>
</ul>
<h3 id="aba-问题">ABA 问题</h3>
<p>由于高并发，在CAS下，更新后可能此A非彼A。通过版本号可以解决，类似于上文Mysql 中提到的的乐观锁。</p>
<ul>
<li><a href="https://www.cnblogs.com/549294286/p/3766717.html" target="_blank" rel="noopener noreffer">《Java CAS 和ABA问题》</a></li>
<li><a href="https://blog.csdn.net/li954644351/article/details/50511879" target="_blank" rel="noopener noreffer">《Java 中 ABA问题及避免》</a>
<ul>
<li>AtomicStampedReference 和 AtomicStampedReference。</li>
</ul>
</li>
</ul>
<h3 id="copyonwrite容器">CopyOnWrite容器</h3>
<p>可以对CopyOnWrite容器进行并发的读，而不需要加锁。CopyOnWrite并发容器用于读多写少的并发场景。比如白名单，黑名单，商品类目的访问和更新场景，不适合需要数据强一致性的场景。</p>
<ul>
<li>
<p><a href="https://www.cnblogs.com/hapjin/p/4840107.html" target="_blank" rel="noopener noreffer">《JAVA中写时复制(Copy-On-Write)Map实现》</a></p>
<ul>
<li>实现读写分离，读取发生在原始数据上，写入发生在副本上。</li>
<li>不用加锁，通过最终一致实现一致性。</li>
</ul>
</li>
<li>
<p><a href="https://blog.csdn.net/a494303877/article/details/53404623" target="_blank" rel="noopener noreffer">《聊聊并发-Java中的Copy-On-Write容器》</a></p>
</li>
</ul>
<h3 id="ringbuffer">RingBuffer</h3>
<ul>
<li><a href="http://www.cnblogs.com/l00l/p/4115001.html" target="_blank" rel="noopener noreffer">《线程安全的无锁RingBuffer的实现【一个读线程，一个写线程】》</a></li>
</ul>
<h3 id="可重入锁--不可重入锁">可重入锁 &amp; 不可重入锁</h3>
<ul>
<li>
<p><a href="https://www.cnblogs.com/dj3839/p/6580765.html" target="_blank" rel="noopener noreffer">《可重入锁和不可重入锁》</a></p>
<ul>
<li>通过简单代码举例说明可重入锁和不可重入锁。</li>
<li>可重入锁指同一个线程可以再次获得之前已经获得的锁。</li>
<li>可重入锁可以用户避免死锁。</li>
<li>Java中的可重入锁：synchronized 和 java.util.concurrent.locks.ReentrantLock</li>
</ul>
</li>
<li>
<p><a href="https://www.cnblogs.com/baizhanshi/p/7211802.html" target="_blank" rel="noopener noreffer">《ReenTrantLock可重入锁（和synchronized的区别）总结》</a></p>
<ul>
<li>synchronized 使用方便，编译器来加锁，是非公平锁。</li>
<li>ReenTrantLock 使用灵活，锁的公平性可以定制。</li>
<li>相同加锁场景下，推荐使用 synchronized。</li>
</ul>
</li>
</ul>
<h3 id="互斥锁--共享锁">互斥锁 &amp; 共享锁</h3>
<p>互斥锁：同时只能有一个线程获得锁。比如，ReentrantLock 是互斥锁，ReadWriteLock 中的写锁是互斥锁。
共享锁：可以有多个线程同时或的锁。比如，Semaphore、CountDownLatch 是共享锁，ReadWriteLock 中的读锁是共享锁。</p>
<ul>
<li><a href="https://www.cnblogs.com/liang1101/p/6475555.html" target="_blank" rel="noopener noreffer">《ReadWriteLock场景应用》</a></li>
</ul>
<h3 id="死锁">死锁</h3>
<ul>
<li>
<p><a href="https://blog.csdn.net/yunfenglw/article/details/45950305" target="_blank" rel="noopener noreffer">《“死锁”四个必要条件的合理解释》</a></p>
<ul>
<li>互斥、持有、不可剥夺、环形等待。</li>
</ul>
</li>
<li>
<p><a href="https://blog.csdn.net/u014039577/article/details/52351626" target="_blank" rel="noopener noreffer">Java如何查看死锁？</a></p>
<ul>
<li>JConsole 可以识别死锁。</li>
</ul>
</li>
<li>
<p><a href="https://blog.csdn.net/bohu83/article/details/51135061" target="_blank" rel="noopener noreffer">java多线程系列：死锁及检测</a></p>
<ul>
<li>jstack 可以显示死锁。</li>
</ul>
</li>
</ul>
<h1 id="操作系统">操作系统</h1>
<h2 id="计算机原理">计算机原理</h2>
<ul>
<li><a href="https://segmentfault.com/a/1190000003692840" target="_blank" rel="noopener noreffer">《操作系统基础知识——操作系统的原理，类型和结构》</a></li>
</ul>
<h2 id="cpu">CPU</h2>
<h3 id="多级缓存">多级缓存</h3>
<p>典型的 CPU 有三级缓存，距离核心越近，速度越快，空间越小。L1 一般 32k，L2 一般 256k，L3 一般12M。内存速度需要200个 CPU 周期，CPU 缓存需要1个CPU周期。</p>
<ul>
<li><a href="https://blog.csdn.net/zero__007/article/details/54089730" target="_blank" rel="noopener noreffer">《从Java视角理解CPU缓存和伪共享》</a></li>
</ul>
<h2 id="进程">进程</h2>
<p>TODO</p>
<h2 id="线程">线程</h2>
<ul>
<li><a href="https://blog.csdn.net/asdf_1024/article/details/78978437" target="_blank" rel="noopener noreffer">《线程的生命周期及状态转换详解》</a></li>
</ul>
<h2 id="协程">协程</h2>
<ul>
<li><a href="https://www.thinksaas.cn/group/topic/839375/" target="_blank" rel="noopener noreffer">《终结python协程&mdash;-从yield到actor模型的实现》</a>
<ul>
<li>线程的调度是由操作系统负责，协程调度是程序自行负责</li>
<li>与线程相比，协程减少了无谓的操作系统切换.</li>
<li>实际上当遇到IO操作时做切换才更有意义，（因为IO操作不用占用CPU），如果没遇到IO操作，按照时间片切换.</li>
</ul>
</li>
</ul>
<h2 id="linux">Linux</h2>
<ul>
<li><a href="http://www.runoob.com/linux/linux-command-manual.html" target="_blank" rel="noopener noreffer">《Linux 命令大全》</a></li>
</ul>
<h1 id="设计模式">设计模式</h1>
<h2 id="设计模式的六大原则">设计模式的六大原则</h2>
<ul>
<li><a href="https://blog.csdn.net/q291611265/article/details/48465113" target="_blank" rel="noopener noreffer">《设计模式的六大原则》</a>
<ul>
<li>开闭原则：对扩展开放,对修改关闭，多使用抽象类和接口。</li>
<li>里氏替换原则：基类可以被子类替换，使用抽象类继承,不使用具体类继承。</li>
<li>依赖倒转原则：要依赖于抽象,不要依赖于具体，针对接口编程,不针对实现编程。</li>
<li>接口隔离原则：使用多个隔离的接口,比使用单个接口好，建立最小的接口。</li>
<li>迪米特法则：一个软件实体应当尽可能少地与其他实体发生相互作用，通过中间类建立联系。</li>
<li>合成复用原则：尽量使用合成/聚合,而不是使用继承。</li>
</ul>
</li>
</ul>
<h2 id="23种常见设计模式">23种常见设计模式</h2>
<ul>
<li><a href="http://www.runoob.com/design-pattern/design-pattern-tutorial.html" target="_blank" rel="noopener noreffer">《设计模式》</a></li>
<li><a href="https://www.cnblogs.com/susanws/p/5510229.html" target="_blank" rel="noopener noreffer">《23种设计模式全解析》</a></li>
<li><a href="https://github.com/ToryZhou/design-pattern" target="_blank" rel="noopener noreffer">《设计模式类图与示例》</a></li>
</ul>
<h2 id="应用场景">应用场景</h2>
<ul>
<li>
<p><a href="http://blog.jobbole.com/62314/" target="_blank" rel="noopener noreffer">《细数JDK里的设计模式》</a></p>
<ul>
<li>
<p>结构型模式：</p>
<ul>
<li>适配器：用来把一个接口转化成另一个接口，如 java.util.Arrays#asList()。</li>
<li>桥接模式：这个模式将抽象和抽象操作的实现进行了解耦，这样使得抽象和实现可以独立地变化，如JDBC；</li>
<li>组合模式：使得客户端看来单个对象和对象的组合是同等的。换句话说，某个类型的方法同时也接受自身类型作为参数，如 Map.putAll，List.addAll、Set.addAll。</li>
<li>装饰者模式：动态的给一个对象附加额外的功能，这也是子类的一种替代方式，如 java.util.Collections#checkedList|Map|Set|SortedSet|SortedMap。</li>
<li>享元模式：使用缓存来加速大量小对象的访问时间，如 valueOf(int)。</li>
<li>代理模式：代理模式是用一个简单的对象来代替一个复杂的或者创建耗时的对象，如 java.lang.reflect.Proxy</li>
</ul>
</li>
<li>
<p>创建模式:</p>
<ul>
<li>抽象工厂模式：抽象工厂模式提供了一个协议来生成一系列的相关或者独立的对象，而不用指定具体对象的类型，如 java.util.Calendar#getInstance()。</li>
<li>建造模式(Builder)：定义了一个新的类来构建另一个类的实例，以简化复杂对象的创建，如：java.lang.StringBuilder#append()。</li>
<li>工厂方法：就是 <strong>一个返</strong>* 回具体对象的方法，而不是多个，如 java.lang.Object#toString()、java.lang.Class#newInstance()。</li>
<li>原型模式：使得类的实例能够生成自身的拷贝、如：java.lang.Object#clone()。</li>
<li>单例模式：全局只有一个实例，如 java.lang.Runtime#getRuntime()。</li>
</ul>
</li>
<li>
<p>行为模式：</p>
<ul>
<li>责任链模式：通过把请求从一个对象传递到链条中下一个对象的方式，直到请求被处理完毕，以实现对象间的解耦。如 javax.servlet.Filter#doFilter()。</li>
<li>命令模式：将操作封装到对象内，以便存储，传递和返回，如：java.lang.Runnable。</li>
<li>解释器模式：定义了一个语言的语法，然后解析相应语法的语句，如，java.text.Format，java.text.Normalizer。</li>
<li>迭代器模式：提供一个一致的方法来顺序访问集合中的对象，如 java.util.Iterator。</li>
<li>中介者模式：通过使用一个中间对象来进行消息分发以及减少类之间的直接依赖，java.lang.reflect.Method#invoke()。</li>
<li>空对象模式：如 java.util.Collections#emptyList()。</li>
<li>观察者模式：它使得一个对象可以灵活的将消息发送给感兴趣的对象，如 java.util.EventListener。</li>
<li>模板方法模式：让子类可以重写方法的一部分，而不是整个重写，如 java.util.Collections#sort()。</li>
</ul>
</li>
</ul>
</li>
<li>
<p><a href="https://www.cnblogs.com/hwaggLee/p/4510687.html" target="_blank" rel="noopener noreffer">《Spring-涉及到的设计模式汇总》</a></p>
</li>
<li>
<p><a href="https://blog.csdn.net/u012387062/article/details/54719114" target="_blank" rel="noopener noreffer">《Mybatis使用的设计模式》</a></p>
</li>
</ul>
<h2 id="单例模式">单例模式</h2>
<ul>
<li><a href="https://blog.csdn.net/YECrazy/article/details/79481964" target="_blank" rel="noopener noreffer">《单例模式的三种实现 以及各自的优缺点》</a></li>
<li><a href="https://www.cnblogs.com/ttylinux/p/6498822.html" target="_blank" rel="noopener noreffer">《单例模式－－反射－－防止序列化破坏单例模式》</a>
<ul>
<li>使用枚举类型。</li>
</ul>
</li>
</ul>
<h2 id="责任链模式">责任链模式</h2>
<p>TODO</p>
<h2 id="mvc">MVC</h2>
<ul>
<li><a href="http://www.runoob.com/design-pattern/mvc-pattern.html" target="_blank" rel="noopener noreffer">《MVC 模式》</a>
<ul>
<li>模型(model)－视图(view)－控制器(controller)</li>
</ul>
</li>
</ul>
<h2 id="ioc">IOC</h2>
<ul>
<li><a href="https://www.zhihu.com/question/23277575" target="_blank" rel="noopener noreffer">《理解 IOC》</a></li>
<li><a href="https://www.cnblogs.com/NancyStartOnce/p/6813162.html" target="_blank" rel="noopener noreffer">《IOC 的理解与解释》</a>
<ul>
<li>正向控制：传统通过new的方式。反向控制，通过容器注入对象。</li>
<li>作用：用于模块解耦。</li>
<li>DI：Dependency Injection，即依赖注入，只关心资源使用，不关心资源来源。</li>
</ul>
</li>
</ul>
<h2 id="aop">AOP</h2>
<ul>
<li><a href="https://blog.csdn.net/yanquan345/article/details/19760027" target="_blank" rel="noopener noreffer">《轻松理解AOP(面向切面编程)》</a></li>
<li><a href="https://www.cnblogs.com/hongwz/p/5764917.html" target="_blank" rel="noopener noreffer">《Spring AOP详解》</a></li>
<li><a href="http://www.importnew.com/24305.html" target="_blank" rel="noopener noreffer">《Spring AOP的实现原理》</a>
<ul>
<li>Spring AOP使用的动态代理，主要有两种方式：JDK动态代理和CGLIB动态代理。</li>
</ul>
</li>
<li><a href="https://www.ibm.com/developerworks/cn/java/j-lo-springaopcglib/" target="_blank" rel="noopener noreffer">《Spring AOP 实现原理与 CGLIB 应用》</a>
<ul>
<li>Spring AOP 框架对 AOP 代理类的处理原则是：如果目标对象的实现类实现了接口，Spring AOP 将会采用 JDK 动态代理来生成 AOP 代理类；如果目标对象的实现类没有实现接口，Spring AOP 将会采用 CGLIB 来生成 AOP 代理类</li>
</ul>
</li>
</ul>
<h2 id="uml">UML</h2>
<ul>
<li><a href="https://www.w3cschool.cn/uml_tutorial/" target="_blank" rel="noopener noreffer">《UML教程》</a></li>
</ul>
<h2 id="微服务思想">微服务思想</h2>
<ul>
<li><a href="https://www.cnblogs.com/wintersun/p/6219259.html" target="_blank" rel="noopener noreffer">《微服务架构设计》</a></li>
<li><a href="http://www.infoq.com/cn/articles/micro-service-technology-stack" target="_blank" rel="noopener noreffer">《微服务架构技术栈选型手册》</a></li>
</ul>
<h3 id="康威定律">康威定律</h3>
<ul>
<li>
<p><a href="https://yq.aliyun.com/articles/8611" target="_blank" rel="noopener noreffer">《微服务架构的理论基础 - 康威定律》</a></p>
<ul>
<li>定律一：组织沟通方式会通过系统设计表达出来，就是说架构的布局和组织结构会有相似。</li>
<li>定律二：时间再多一件事情也不可能做的完美，但总有时间做完一件事情。一口气吃不成胖子，先搞定能搞定的。</li>
<li>定律三：线型系统和线型组织架构间有潜在的异质同态特性。种瓜得瓜，做独立自治的子系统减少沟通成本。</li>
<li>定律四：大的系统组织总是比小系统更倾向于分解。合久必分，分而治之。</li>
</ul>
</li>
<li>
<p><a href="https://static.geekbang.org/PDF-%E4%BF%AE%E6%94%B9%E7%89%88-%E6%9E%81%E5%AE%A2%E6%97%B6%E9%97%B4-%E5%9B%BE%E7%89%87-%E6%9D%A8%E6%B3%A2-%E5%BE%AE%E6%9C%8D%E5%8A%A1%E6%9E%B6%E6%9E%84.pdf" target="_blank" rel="noopener noreffer">《微服务架构核⼼20讲》</a></p>
</li>
</ul>
<h1 id="运维--统计--技术支持">运维 &amp; 统计 &amp; 技术支持</h1>
<h2 id="常规监控">常规监控</h2>
<ul>
<li>
<p><a href="https://blog.csdn.net/enweitech/article/details/77849205" target="_blank" rel="noopener noreffer">《腾讯业务系统监控的修炼之路》</a></p>
<ul>
<li>监控的方式：主动、被动、旁路(比如舆情监控)</li>
<li>监控类型： 基础监控、服务端监控、客户端监控、
监控、用户端监控</li>
<li>监控的目标：全、块、准</li>
<li>核心指标：请求量、成功率、耗时</li>
</ul>
</li>
<li>
<p><a href="https://www.oschina.net/news/67525/monitoring-tools" target="_blank" rel="noopener noreffer">《开源还是商用？十大云运维监控工具横评》</a></p>
<ul>
<li>Zabbix、Nagios、Ganglia、Zenoss、Open-falcon、监控宝、 360网站服务监控、阿里云监控、百度云观测、小蜜蜂网站监测等。</li>
</ul>
</li>
<li>
<p><a href="http://developer.51cto.com/art/201612/525373.htm" target="_blank" rel="noopener noreffer">《监控报警系统搭建及二次开发经验》</a></p>
</li>
</ul>
<p><strong>命令行监控工具</strong></p>
<ul>
<li>
<p><a href="https://coderxing.gitbooks.io/architecture-evolution/di-er-pian-ff1a-feng-kuang-yuan-shi-ren/44-an-quan-yu-yun-wei/445-fu-wu-qi-zhuang-tai-jian-ce/4451-ming-ling-xing-gong-ju.html" target="_blank" rel="noopener noreffer">《常用命令行监控工具》</a></p>
<ul>
<li>top、sar、tsar、nload</li>
</ul>
</li>
<li>
<p><a href="http://blog.jobbole.com/96846/" target="_blank" rel="noopener noreffer">《20个命令行工具监控 Linux 系统性能》</a></p>
</li>
<li>
<p><a href="https://my.oschina.net/feichexia/blog/196575" target="_blank" rel="noopener noreffer">《JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解》</a></p>
</li>
</ul>
<h2 id="apm">APM</h2>
<p>APM —  Application Performance Management</p>
<ul>
<li>
<p><a href="http://bigbully.github.io/Dapper-translation/" target="_blank" rel="noopener noreffer">《Dapper，大规模分布式系统的跟踪系统》</a></p>
</li>
<li>
<p><a href="http://opentracing.io" target="_blank" rel="noopener noreffer">CNCF OpenTracing</a>，<a href="https://github.com/opentracing-contrib/opentracing-specification-zh" target="_blank" rel="noopener noreffer">中文版</a></p>
</li>
<li>
<p>主要开源软件，按字母排序</p>
<ul>
<li><a href="https://github.com/apache/incubator-skywalking" target="_blank" rel="noopener noreffer">Apache SkyWalking</a></li>
<li><a href="https://github.com/dianping/cat" target="_blank" rel="noopener noreffer">CAT</a></li>
<li><a href="https://github.com/jaegertracing/jaeger" target="_blank" rel="noopener noreffer">CNCF jaeger</a></li>
<li><a href="https://github.com/naver/pinpoint" target="_blank" rel="noopener noreffer">Pinpoint</a></li>
<li><a href="https://github.com/openzipkin/zipkin" target="_blank" rel="noopener noreffer">Zipkin</a></li>
</ul>
</li>
<li>
<p><a href="http://www.infoq.com/cn/articles/apm-Pinpoint-practice" target="_blank" rel="noopener noreffer">《开源APM技术选型与实战》</a></p>
<ul>
<li>主要基于 Google的Dapper（大规模分布式系统的跟踪系统） 思想。</li>
</ul>
</li>
</ul>
<h2 id="统计分析">统计分析</h2>
<ul>
<li>
<p><a href="https://zhuanlan.zhihu.com/p/25195217" target="_blank" rel="noopener noreffer">《流量统计的基础：埋点》</a></p>
<ul>
<li>常用指标：访问与访客、停留时长、跳出率、退出率、转化率、参与度</li>
</ul>
</li>
<li>
<p><a href="http://www.25xt.com/company/17066.html" target="_blank" rel="noopener noreffer">《APP埋点常用的统计工具、埋点目标和埋点内容》</a></p>
<ul>
<li>第三方统计：友盟、百度移动、魔方、App Annie、talking data、神策数据等。</li>
</ul>
</li>
<li>
<p><a href="https://tech.meituan.com/mt_mobile_analytics_practice.html" target="_blank" rel="noopener noreffer">《美团点评前端无痕埋点实践》</a></p>
<ul>
<li>所谓无痕、即通过可视化工具配置采集节点，在前端自动解析配置并上报埋点数据，而非硬编码。</li>
</ul>
</li>
</ul>
<h2 id="持续集成cicd">持续集成(CI/CD)</h2>
<ul>
<li><a href="http://www.ruanyifeng.com/blog/2015/09/continuous-integration.html" target="_blank" rel="noopener noreffer">《持续集成是什么？》</a></li>
<li><a href="https://www.testwo.com/article/1170" target="_blank" rel="noopener noreffer">《8个流行的持续集成工具》</a></li>
</ul>
<h3 id="jenkins">Jenkins</h3>
<ul>
<li><a href="https://www.liaoxuefeng.com/article/001463233913442cdb2d1bd1b1b42e3b0b29eb1ba736c5e000" target="_blank" rel="noopener noreffer">《使用Jenkins进行持续集成》</a></li>
</ul>
<h3 id="环境分离">环境分离</h3>
<p>开发、测试、生成环境分离。</p>
<ul>
<li><a href="https://my.oschina.net/sancuo/blog/214904" target="_blank" rel="noopener noreffer">《开发环境、生产环境、测试环境的基本理解和区》</a></li>
</ul>
<h2 id="自动化运维">自动化运维</h2>
<h3 id="ansible">Ansible</h3>
<ul>
<li><a href="http://www.ansible.com.cn/" target="_blank" rel="noopener noreffer">《Ansible中文权威指南》</a></li>
<li><a href="https://www.cnblogs.com/heiye123/articles/7855890.html" target="_blank" rel="noopener noreffer">《Ansible基础配置和企业级项目实用案例》</a></li>
</ul>
<h3 id="puppet">puppet</h3>
<ul>
<li><a href="https://www.cnblogs.com/keerya/p/8040071.html" target="_blank" rel="noopener noreffer">《自动化运维工具——puppet详解》</a></li>
</ul>
<h3 id="chef">chef</h3>
<ul>
<li><a href="https://www.ibm.com/developerworks/cn/cloud/library/1407_caomd_chef/" target="_blank" rel="noopener noreffer">《Chef 的安装与使用》</a></li>
</ul>
<h2 id="测试">测试</h2>
<h3 id="tdd-理论">TDD 理论</h3>
<ul>
<li><a href="https://www.jianshu.com/p/62f16cd4fef3" target="_blank" rel="noopener noreffer">《深度解读 - TDD（测试驱动开发）》</a>
<ul>
<li>基于测试用例编码功能代码，XP（Extreme Programming）的核心实践.</li>
<li>好处：一次关注一个点，降低思维负担；迎接需求变化或改善代码的设计；提前澄清需求；快速反馈；</li>
</ul>
</li>
</ul>
<h3 id="单元测试">单元测试</h3>
<ul>
<li><a href="https://www.cnblogs.com/happyzm/p/6482886.html" target="_blank" rel="noopener noreffer">《Java单元测试之JUnit篇》</a></li>
<li><a href="https://blog.csdn.net/hotdust/article/details/53406086" target="_blank" rel="noopener noreffer">《JUnit 4 与 TestNG 对比》</a>
<ul>
<li>TestNG 覆盖 JUnit 功能，适用于更复杂的场景。</li>
</ul>
</li>
<li><a href="https://blog.csdn.net/wqetfg/article/details/50900512" target="_blank" rel="noopener noreffer">《单元测试主要的测试功能点》</a>
<ul>
<li>模块接口测试、局部数据结构测试、路径测试 、错误处理测试、边界条件测试 。</li>
</ul>
</li>
</ul>
<h3 id="压力测试">压力测试</h3>
<ul>
<li><a href="https://blog.csdn.net/blueheart20/article/details/52170790" target="_blank" rel="noopener noreffer">《Apache ab 测试使用指南》</a></li>
<li><a href="https://www.cnblogs.com/binyue/p/6141088.html" target="_blank" rel="noopener noreffer">《大型网站压力测试及优化方案》</a></li>
<li><a href="http://news.chinabyte.com/466/14126966.shtml" target="_blank" rel="noopener noreffer">《10大主流压力/负载/性能测试工具推荐》</a></li>
<li><a href="http://quentinxxz.iteye.com/blog/2249799" target="_blank" rel="noopener noreffer">《真实流量压测工具 tcpcopy应用浅析》</a></li>
<li><a href="https://www.cnblogs.com/jwentest/p/7136727.html" target="_blank" rel="noopener noreffer">《nGrinder 简易使用教程》</a></li>
</ul>
<h3 id="全链路压测">全链路压测</h3>
<ul>
<li><a href="http://www.infoq.com/cn/articles/jd-618-upgrade-full-link-voltage-test-program-forcebot" target="_blank" rel="noopener noreffer">《京东618：升级全链路压测方案，打造军演机器人ForceBot》</a></li>
<li><a href="https://zhuanlan.zhihu.com/p/30306892" target="_blank" rel="noopener noreffer">《饿了么全链路压测的探索与实践》</a></li>
<li><a href="https://zhuanlan.zhihu.com/p/28355759" target="_blank" rel="noopener noreffer">《四大语言，八大框架｜滴滴全链路压测解决之道》</a></li>
<li><a href="https://www.jianshu.com/p/27060fd61f72" target="_blank" rel="noopener noreffer">《全链路压测经验》</a></li>
</ul>
<h3 id="ab-灰度蓝绿测试">A/B 、灰度、蓝绿测试</h3>
<ul>
<li>
<p><a href="https://testerhome.com/topics/11165" target="_blank" rel="noopener noreffer">《技术干货 | AB 测试和灰度发布探索及实践》</a></p>
</li>
<li>
<p><a href="http://blog.51cto.com/purplegrape/1403123" target="_blank" rel="noopener noreffer">《nginx 根据IP 进行灰度发布》</a></p>
</li>
<li>
<p><a href="https://www.v2ex.com/t/344341" target="_blank" rel="noopener noreffer">《蓝绿部署、A/B 测试以及灰度发布》</a></p>
</li>
</ul>
<h2 id="虚拟化">虚拟化</h2>
<ul>
<li><a href="https://blog.csdn.net/enweitech/article/details/52910082" target="_blank" rel="noopener noreffer">《VPS的三种虚拟技术OpenVZ、Xen、KVM优缺点比较》</a></li>
</ul>
<h3 id="kvm">KVM</h3>
<ul>
<li><a href="http://blog.chinaunix.net/uid-20201831-id-5775661.html" target="_blank" rel="noopener noreffer">《KVM详解，太详细太深入了，经典》</a></li>
<li><a href="https://www.coderxing.com/kvm-install.html" target="_blank" rel="noopener noreffer">《【图文】KVM 虚拟机安装详解》</a></li>
</ul>
<h3 id="xen">Xen</h3>
<ul>
<li><a href="https://www.cnblogs.com/sddai/p/5931201.html" target="_blank" rel="noopener noreffer">《Xen虚拟化基本原理详解》</a></li>
</ul>
<h3 id="openvz">OpenVZ</h3>
<ul>
<li><a href="https://blog.csdn.net/longerzone/article/details/44829255" target="_blank" rel="noopener noreffer">《开源Linux容器 OpenVZ 快速上手指南》</a></li>
</ul>
<h2 id="容器技术">容器技术</h2>
<h3 id="docker">Docker</h3>
<ul>
<li><a href="https://www.cnblogs.com/SzeCheng/p/6822905.html" target="_blank" rel="noopener noreffer">《几张图帮你理解 docker 基本原理及快速入门》</a></li>
<li><a href="https://draveness.me/docker" target="_blank" rel="noopener noreffer">《Docker 核心技术与实现原理》</a></li>
<li><a href="http://www.runoob.com/docker/docker-tutorial.html" target="_blank" rel="noopener noreffer">《Docker 教程》</a></li>
</ul>
<h2 id="云技术">云技术</h2>
<h3 id="openstack">OpenStack</h3>
<ul>
<li><a href="https://www.cnblogs.com/klb561/p/8660264.html" target="_blank" rel="noopener noreffer">《OpenStack构架知识梳理》</a></li>
</ul>
<h2 id="devops">DevOps</h2>
<ul>
<li><a href="https://www.cnblogs.com/jetzhang/p/6068773.html" target="_blank" rel="noopener noreffer">《一分钟告诉你究竟DevOps是什么鬼？》</a></li>
<li><a href="http://www.infoq.com/cn/articles/detail-analysis-of-devops" target="_blank" rel="noopener noreffer">《DevOps详解》</a></li>
</ul>
<h2 id="文档管理">文档管理</h2>
<ul>
<li><a href="http://www.confluence.cn/" target="_blank" rel="noopener noreffer">Confluence-收费文档管理系统</a></li>
<li>GitLab?</li>
<li>Wiki</li>
</ul>
<h1 id="中间件">中间件</h1>
<h2 id="web-server">Web Server</h2>
<h3 id="nginx">Nginx</h3>
<ul>
<li>
<p><a href="https://blog.csdn.net/qq_25797077/article/details/52200722" target="_blank" rel="noopener noreffer">《Ngnix的基本学习-多进程和Apache的比较》</a></p>
<ul>
<li>Nginx 通过异步非阻塞的事件处理机制实现高并发。Apache 每个请求独占一个线程，非常消耗系统资源。</li>
<li>事件驱动适合于IO密集型服务(Nginx)，多进程或线程适合于CPU密集型服务(Apache)，所以Nginx适合做反向代理，而非web服务器使用。</li>
</ul>
</li>
<li>
<p><a href="https://www.cnblogs.com/cunkouzh/p/5410154.html" target="_blank" rel="noopener noreffer">《nginx与Apache的对比以及优缺点》</a></p>
<ul>
<li>nginx只适合静态和反向代理，不适合处理动态请求。</li>
</ul>
</li>
</ul>
<h3 id="openresty">OpenResty</h3>
<ul>
<li><a href="http://openresty.org/cn/" target="_blank" rel="noopener noreffer">官方网站</a></li>
<li><a href="http://www.linkedkeeper.com/detail/blog.action?bid=1034" target="_blank" rel="noopener noreffer">《浅谈 OpenResty》</a>
<ul>
<li>通过 Lua 模块可以在Nginx上进行开发。</li>
</ul>
</li>
<li><a href="https://openresty.org/download/agentzh-nginx-tutorials-zhcn.html" target="_blank" rel="noopener noreffer">agentzh 的 Nginx 教程</a></li>
</ul>
<h3 id="tengine">Tengine</h3>
<ul>
<li><a href="http://tengine.taobao.org/" target="_blank" rel="noopener noreffer">官方网站</a></li>
</ul>
<h3 id="apache-httpd">Apache Httpd</h3>
<ul>
<li><a href="http://httpd.apache.org/" target="_blank" rel="noopener noreffer">官方网站</a></li>
</ul>
<h3 id="tomcat">Tomcat</h3>
<h4 id="架构原理">架构原理</h4>
<ul>
<li>
<p><a href="https://www.cnblogs.com/hggen/p/6264475.html" target="_blank" rel="noopener noreffer">《TOMCAT原理详解及请求过程》</a></p>
</li>
<li>
<p><a href="https://www.cnblogs.com/crazylqy/p/4706223.html" target="_blank" rel="noopener noreffer">《Tomcat服务器原理详解》</a></p>
</li>
<li>
<p><a href="https://www.ibm.com/developerworks/cn/java/j-lo-tomcat1/" target="_blank" rel="noopener noreffer">《Tomcat 系统架构与设计模式,第 1 部分: 工作原理》</a></p>
</li>
<li>
<p><a href="https://blog.csdn.net/xlgen157387/article/details/79006434" target="_blank" rel="noopener noreffer">《四张图带你了解Tomcat系统架构》</a></p>
</li>
<li>
<p><a href="https://www.futurehosting.com/blog/jboss-vs-tomcat-choosing-a-java-application-server/" target="_blank" rel="noopener noreffer">《JBoss vs. Tomcat: Choosing A Java Application Server》</a></p>
<ul>
<li>Tomcat 是轻量级的 Serverlet 容器，没有实现全部 JEE 特性（比如持久化和事务处理），但可以通过其他组件代替，比如Spring。</li>
<li>Jboss 实现全部了JEE特性，软件开源免费、文档收费。</li>
</ul>
</li>
</ul>
<h4 id="调优方案">调优方案</h4>
<ul>
<li>
<p><a href="https://www.cnblogs.com/sunfenqing/p/7339058.html" target="_blank" rel="noopener noreffer">《Tomcat 调优方案》</a></p>
<ul>
<li>启动NIO模式（或者APR）；调整线程池；禁用AJP连接器（Nginx+tomcat的架构，不需要AJP）；</li>
</ul>
</li>
<li>
<p><a href="http://blog.chinaunix.net/uid-20662363-id-3012760.html" target="_blank" rel="noopener noreffer">《tomcat http协议与ajp协议》</a></p>
</li>
<li>
<p><a href="http://dmouse.iteye.com/blog/1354527" target="_blank" rel="noopener noreffer">《AJP与HTTP比较和分析》</a></p>
<ul>
<li>AJP 协议（8009端口）用于降低和前端Server（如Apache，而且需要支持AJP协议）的连接数(前端)，通过长连接提高性能。</li>
<li>并发高时，AJP协议优于HTTP协议。</li>
</ul>
</li>
</ul>
<h3 id="jetty">Jetty</h3>
<ul>
<li><a href="https://www.ibm.com/developerworks/cn/java/j-lo-jetty/" target="_blank" rel="noopener noreffer">《Jetty 的工作原理以及与 Tomcat 的比较》</a></li>
<li><a href="https://blog.csdn.net/doutao6677/article/details/51957288" target="_blank" rel="noopener noreffer">《jetty和tomcat优势比较》</a>
<ul>
<li>架构比较:Jetty的架构比Tomcat的更为简单。</li>
<li>性能比较：Jetty和Tomcat性能方面差异不大，Jetty默认采用NIO结束在处理I/O请求上更占优势，Tomcat默认采用BIO处理I/O请求，Tomcat适合处理少数非常繁忙的链接，处理静态资源时性能较差。</li>
<li>其他方面：Jetty的应用更加快速，修改简单，对新的Servlet规范的支持较好;Tomcat 对JEE和Servlet 支持更加全面。</li>
</ul>
</li>
</ul>
<h2 id="缓存">缓存</h2>
<ul>
<li><a href="https://blog.csdn.net/clementad/article/details/48229243" target="_blank" rel="noopener noreffer">《缓存失效策略（FIFO 、LRU、LFU三种算法的区别）》</a></li>
</ul>
<h3 id="本地缓存">本地缓存</h3>
<ul>
<li>
<p><a href="https://coderxing.gitbooks.io/architecture-evolution/di-er-pian-ff1a-feng-kuang-yuan-shi-ren/42-xing-neng-zhi-ben-di-huan-cun/421-ying-yong-ceng-ben-di-huan-cun/4211.html" target="_blank" rel="noopener noreffer">《HashMap本地缓存》</a></p>
</li>
<li>
<p><a href="https://coderxing.gitbooks.io/architecture-evolution/di-er-pian-ff1a-feng-kuang-yuan-shi-ren/42-xing-neng-zhi-ben-di-huan-cun/421-ying-yong-ceng-ben-di-huan-cun/4212-ehcache.html" target="_blank" rel="noopener noreffer">《EhCache本地缓存》</a></p>
<ul>
<li>堆内、堆外、磁盘三级缓存。</li>
<li>可按照缓存空间容量进行设置。</li>
<li>按照时间、次数等过期策略。</li>
</ul>
</li>
<li>
<p><a href="https://coderxing.gitbooks.io/architecture-evolution/di-er-pian-ff1a-feng-kuang-yuan-shi-ren/42-xing-neng-zhi-ben-di-huan-cun/421-ying-yong-ceng-ben-di-huan-cun/4213-guava-cache.html" target="_blank" rel="noopener noreffer">《Guava Cache》</a></p>
<ul>
<li>简单轻量、无堆外、磁盘缓存。</li>
</ul>
</li>
<li>
<p><a href="https://coderxing.gitbooks.io/architecture-evolution/di-er-pian-ff1a-feng-kuang-yuan-shi-ren/42-xing-neng-zhi-ben-di-huan-cun/422-fu-wu-duan-ben-di-huan-cun/nginx-ben-di-huan-cun.html" target="_blank" rel="noopener noreffer">《Nginx本地缓存》</a></p>
</li>
<li>
<p><a href="https://coderxing.gitbooks.io/architecture-evolution/di-er-pian-ff1a-feng-kuang-yuan-shi-ren/42-xing-neng-zhi-ben-di-huan-cun/422-fu-wu-duan-ben-di-huan-cun/4222-pagespeed.html" target="_blank" rel="noopener noreffer">《Pagespeed—懒人工具，服务器端加速》</a></p>
</li>
</ul>
<h2 id="客户端缓存">客户端缓存</h2>
<ul>
<li>
<p><a href="https://coderxing.gitbooks.io/architecture-evolution/di-er-pian-ff1a-feng-kuang-yuan-shi-ren/42-xing-neng-zhi-ben-di-huan-cun/423-ke-hu-duan-huan-cun.html" target="_blank" rel="noopener noreffer">《浏览器端缓存》</a></p>
<ul>
<li>主要是利用 Cache-Control 参数。</li>
</ul>
</li>
<li>
<p><a href="https://mp.weixin.qq.com/s/qHm_dJBhVbv0pJs8Crp77w" target="_blank" rel="noopener noreffer">《H5 和移动端 WebView 缓存机制解析与实战》</a></p>
</li>
</ul>
<h2 id="服务端缓存">服务端缓存</h2>
<h3 id="web缓存">Web缓存</h3>
<ul>
<li><a href="https://github.com/jiangwenyuan/nuster" target="_blank" rel="noopener noreffer">nuster</a> - nuster cache</li>
<li><a href="https://github.com/varnishcache/varnish-cache" target="_blank" rel="noopener noreffer">varnish</a> - varnish cache</li>
<li><a href="https://github.com/squid-cache/squid" target="_blank" rel="noopener noreffer">squid</a> - squid cache</li>
</ul>
<h3 id="memcached">Memcached</h3>
<ul>
<li>
<p><a href="http://www.runoob.com/Memcached/Memcached-tutorial.html" target="_blank" rel="noopener noreffer">《Memcached 教程》</a></p>
</li>
<li>
<p><a href="https://blog.csdn.net/chenleixing/article/details/47035453" target="_blank" rel="noopener noreffer">《深入理解Memcached原理》</a></p>
<ul>
<li>采用多路复用技术提高并发性。</li>
<li>slab分配算法： memcached给Slab分配内存空间，默认是1MB。分配给Slab之后 把slab的切分成大小相同的chunk，Chunk是用于缓存记录的内存空间，Chunk 的大小默认按照1.25倍的速度递增。好处是不会频繁申请内存，提高IO效率，坏处是会有一定的内存浪费。</li>
</ul>
</li>
<li>
<p><a href="https://www.jianshu.com/p/36e5cd400580" target="_blank" rel="noopener noreffer">《Memcached软件工作原理》</a></p>
</li>
<li>
<p><a href="http://zhihuzeye.com/archives/2361" target="_blank" rel="noopener noreffer">《Memcache技术分享：介绍、使用、存储、算法、优化、命中率》</a></p>
</li>
<li>
<p><a href="https://blog.csdn.net/liu251890347/article/details/37690045" target="_blank" rel="noopener noreffer">《memcache 中 add 、 set 、replace 的区别》</a></p>
<ul>
<li>区别在于当key存在还是不存在时，返回值是true和false的。</li>
</ul>
</li>
<li>
<p><a href="https://pan.baidu.com/s/1qX00Lti?errno=0&amp;errmsg=Auth%20Login%20Sucess&amp;&amp;bduss=&amp;ssnerror=0&amp;traceid=" target="_blank" rel="noopener noreffer"><strong>《memcached全面剖析》</strong></a></p>
</li>
</ul>
<h3 id="redis">Redis</h3>
<ul>
<li>
<p><a href="http://www.runoob.com/redis/redis-tutorial.html" target="_blank" rel="noopener noreffer">《Redis 教程》</a></p>
</li>
<li>
<p><a href="https://blog.csdn.net/wcf373722432/article/details/78678504" target="_blank" rel="noopener noreffer">《redis底层原理》</a></p>
<ul>
<li>使用 ziplist 存储链表，ziplist是一种压缩链表，它的好处是更能节省内存空间，因为它所存储的内容都是在连续的内存区域当中的。</li>
<li>使用 skiplist(跳跃表)来存储有序集合对象、查找上先从高Level查起、时间复杂度和红黑树相当，实现容易，无锁、并发性好。</li>
</ul>
</li>
<li>
<p><a href="http://doc.redisfans.com/topic/persistence.html" target="_blank" rel="noopener noreffer">《Redis持久化方式》</a></p>
<ul>
<li>RDB方式：定期备份快照，常用于灾难恢复。优点：通过fork出的进程进行备份，不影响主进程、RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快。缺点：会丢数据。</li>
<li>AOF方式：保存操作日志方式。优点：恢复时数据丢失少，缺点：文件大，回复慢。</li>
<li>也可以两者结合使用。</li>
</ul>
</li>
<li>
<p><a href="https://blog.csdn.net/chunlongyu/article/details/53346436" target="_blank" rel="noopener noreffer">《分布式缓存&ndash;序列3&ndash;原子操作与CAS乐观锁》</a></p>
</li>
</ul>
<h4 id="架构">架构</h4>
<ul>
<li><a href="https://blog.csdn.net/sunhuiliang85/article/details/73656830" target="_blank" rel="noopener noreffer">《Redis单线程架构》</a></li>
</ul>
<h4 id="回收策略">回收策略</h4>
<ul>
<li><a href="https://blog.csdn.net/qq_29108585/article/details/63251491" target="_blank" rel="noopener noreffer">《redis的回收策略》</a></li>
</ul>
<h3 id="tair">Tair</h3>
<ul>
<li><a href="https://github.com/alibaba/tair" target="_blank" rel="noopener noreffer">官方网站</a></li>
<li><a href="http://blog.csdn.net/farphone/article/details/53522383" target="_blank" rel="noopener noreffer">《Tair和Redis的对比》</a></li>
<li>特点：可以配置备份节点数目，通过异步同步到备份节点</li>
<li>一致性Hash算法。</li>
<li>架构：和Hadoop 的设计思想类似，有Configserver，DataServer，Configserver 通过心跳来检测，Configserver也有主备关系。</li>
</ul>
<p>几种存储引擎:</p>
<ul>
<li>MDB，完全内存性，可以用来存储Session等数据。</li>
<li>Rdb（类似于Redis），轻量化，去除了aof之类的操作，支持Restfull操作</li>
<li>LDB（LevelDB存储引擎），持久化存储，LDB 作为rdb的持久化，google实现，比较高效，理论基础是LSM(Log-Structured-Merge Tree)算法，现在内存中修改数据，达到一定量时（和内存汇总的旧数据一同写入磁盘）再写入磁盘，存储更加高效，县比喻Hash算法。</li>
<li>Tair采用共享内存来存储数据，如果服务挂掉（非服务器），重启服务之后，数据亦然还在。</li>
</ul>
<h2 id="消息队列">消息队列</h2>
<ul>
<li>
<p><a href="https://www.cnblogs.com/charlesblc/p/6045238.html" target="_blank" rel="noopener noreffer">《消息队列-推/拉模式学习 &amp; ActiveMQ及JMS学习》</a></p>
<ul>
<li>RabbitMQ 消费者默认是推模式（也支持拉模式）。</li>
<li>Kafka 默认是拉模式。</li>
<li>Push方式：优点是可以尽可能快地将消息发送给消费者，缺点是如果消费者处理能力跟不上，消费者的缓冲区可能会溢出。</li>
<li>Pull方式：优点是消费端可以按处理能力进行拉去，缺点是会增加消息延迟。</li>
</ul>
</li>
<li>
<p><a href="https://blog.csdn.net/yunfeng482/article/details/72856762" target="_blank" rel="noopener noreffer">《Kafka、RabbitMQ、RocketMQ等消息中间件的对比 —— 消息发送性能和区别》</a></p>
</li>
</ul>
<h3 id="消息总线">消息总线</h3>
<p>消息总线相当于在消息队列之上做了一层封装，统一入口，统一管控、简化接入成本。</p>
<ul>
<li><a href="https://blog.csdn.net/yanghua_kobe/article/details/43877281" target="_blank" rel="noopener noreffer">《消息总线VS消息队列》</a></li>
</ul>
<h3 id="消息的顺序">消息的顺序</h3>
<ul>
<li><a href="https://www.cnblogs.com/cjsblog/p/8267892.html" target="_blank" rel="noopener noreffer">《如何保证消费者接收消息的顺序》</a></li>
</ul>
<h3 id="rabbitmq">RabbitMQ</h3>
<p>支持事务，推拉模式都是支持、适合需要可靠性消息传输的场景。</p>
<ul>
<li><a href="https://blog.csdn.net/whoamiyang/article/details/54954780" target="_blank" rel="noopener noreffer">《RabbitMQ的应用场景以及基本原理介绍》</a></li>
<li><a href="https://www.jianshu.com/p/79ca08116d57" target="_blank" rel="noopener noreffer">《消息队列之 RabbitMQ》</a></li>
<li><a href="https://blog.csdn.net/u013256816/article/details/55515234" target="_blank" rel="noopener noreffer">《RabbitMQ之消息确认机制（事务+Confirm）》</a></li>
</ul>
<h3 id="rocketmq">RocketMQ</h3>
<p>Java实现，推拉模式都是支持，吞吐量逊于Kafka。可以保证消息顺序。</p>
<ul>
<li><a href="https://www.jianshu.com/p/824066d70da8" target="_blank" rel="noopener noreffer">《RocketMQ 实战之快速入门》</a></li>
<li><a href="http://www.iocoder.cn/categories/RocketMQ/?vip&amp;architect-awesome" target="_blank" rel="noopener noreffer">《RocketMQ 源码解析》</a></li>
</ul>
<h3 id="activemq">ActiveMQ</h3>
<p>纯Java实现，兼容JMS，可以内嵌于Java应用中。</p>
<ul>
<li><a href="https://www.cnblogs.com/wintersun/p/3962302.html" target="_blank" rel="noopener noreffer">《ActiveMQ消息队列介绍》</a></li>
</ul>
<h3 id="kafka">Kafka</h3>
<p>高吞吐量、采用拉模式。适合高IO场景，比如日志同步。</p>
<ul>
<li><a href="http://kafka.apache.org/" target="_blank" rel="noopener noreffer">官方网站</a></li>
<li><a href="https://blog.csdn.net/allthesametome/article/details/47362451" target="_blank" rel="noopener noreffer">《各消息队列对比，Kafka深度解析，众人推荐，精彩好文！》</a></li>
<li><a href="http://lxw1234.com/archives/2015/10/538.htm" target="_blank" rel="noopener noreffer">《Kafka分区机制介绍与示例》</a></li>
</ul>
<h3 id="redis-消息推送">Redis 消息推送</h3>
<p>生产者、消费者模式完全是客户端行为，list 和 拉模式实现，阻塞等待采用 blpop 指令。</p>
<ul>
<li><a href="https://blog.csdn.net/qq_34212276/article/details/78455004" target="_blank" rel="noopener noreffer">《Redis学习笔记之十：Redis用作消息队列》</a></li>
</ul>
<h3 id="zeromq">ZeroMQ</h3>
<p>TODO</p>
<h2 id="定时调度">定时调度</h2>
<h3 id="单机定时调度">单机定时调度</h3>
<ul>
<li>
<p><a href="https://www.cnblogs.com/shuaiqing/p/7742382.html" target="_blank" rel="noopener noreffer">《linux定时任务cron配置》</a></p>
</li>
<li>
<p><a href="https://my.oschina.net/daquan/blog/483305" target="_blank" rel="noopener noreffer">《Linux cron运行原理》</a></p>
<ul>
<li>fork 进程 + sleep 轮询</li>
</ul>
</li>
<li>
<p><a href="https://www.cnblogs.com/drift-ice/p/3817269.html" target="_blank" rel="noopener noreffer">《Quartz使用总结》</a></p>
</li>
<li>
<p><a href="https://blog.csdn.net/wenniuwuren/article/details/42082981/" target="_blank" rel="noopener noreffer">《Quartz源码解析 &mdash;- 触发器按时启动原理》</a></p>
</li>
<li>
<p><a href="https://www.jianshu.com/p/bab8e4e32952" target="_blank" rel="noopener noreffer">《quartz原理揭秘和源码解读》</a></p>
<ul>
<li>定时调度在 QuartzSchedulerThread 代码中，while()无限循环，每次循环取出时间将到的trigger，触发对应的job，直到调度器线程被关闭。</li>
</ul>
</li>
</ul>
<h3 id="分布式定时调度">分布式定时调度</h3>
<ul>
<li>
<p><a href="https://blog.csdn.net/qq_16216221/article/details/70314337" target="_blank" rel="noopener noreffer">《这些优秀的国产分布式任务调度系统，你用过几个？》</a></p>
<ul>
<li>opencron、LTS、XXL-JOB、Elastic-Job、Uncode-Schedule、Antares</li>
</ul>
</li>
<li>
<p><a href="https://www.cnblogs.com/zhenyuyaodidiao/p/4755649.html" target="_blank" rel="noopener noreffer">《Quartz任务调度的基本实现原理》</a></p>
<ul>
<li>Quartz集群中，独立的Quartz节点并不与另一其的节点或是管理节点通信，而是通过相同的数据库表来感知到另一Quartz应用的</li>
</ul>
</li>
<li>
<p><a href="http://www.iocoder.cn/categories/Elastic-Job-Lite/?vip&amp;architect-awesome" target="_blank" rel="noopener noreffer">《Elastic-Job-Lite 源码解析》</a></p>
</li>
<li>
<p><a href="http://www.iocoder.cn/categories/Elastic-Job-Cloud/?vip&amp;architect-awesome" target="_blank" rel="noopener noreffer">《Elastic-Job-Cloud 源码解析》</a></p>
</li>
</ul>
<h2 id="rpc">RPC</h2>
<ul>
<li>
<p><a href="https://blog.csdn.net/top_code/article/details/54615853" target="_blank" rel="noopener noreffer">《从零开始实现RPC框架 - RPC原理及实现》</a></p>
<ul>
<li>核心角色：Server: 暴露服务的服务提供方、Client: 调用远程服务的服务消费方、Registry: 服务注册与发现的注册中心。</li>
</ul>
</li>
<li>
<p><a href="https://blog.csdn.net/testcs_dn/article/details/78050590" target="_blank" rel="noopener noreffer">《分布式RPC框架性能大比拼 dubbo、motan、rpcx、gRPC、thrift的性能比较》</a></p>
</li>
</ul>
<h3 id="dubbo">Dubbo</h3>
<ul>
<li><a href="http://dubbo.apache.org/" target="_blank" rel="noopener noreffer">官方网站</a></li>
<li><a href="https://www.cnblogs.com/steven520213/p/7606598.html" target="_blank" rel="noopener noreffer">dubbo实现原理简单介绍</a></li>
</ul>
<p>** SPI **
TODO</p>
<h3 id="thrift">Thrift</h3>
<ul>
<li><a href="http://thrift.apache.org/" target="_blank" rel="noopener noreffer">官方网站</a></li>
<li><a href="https://blog.csdn.net/kesonyk/article/details/50924489" target="_blank" rel="noopener noreffer">《Thrift RPC详解》</a>
<ul>
<li>支持多语言，通过中间语言定义接口。</li>
</ul>
</li>
</ul>
<h3 id="grpc">gRPC</h3>
<p>服务端可以认证加密，在外网环境下，可以保证数据安全。</p>
<ul>
<li><a href="https://grpc.io/" target="_blank" rel="noopener noreffer">官方网站</a></li>
<li><a href="https://www.cnblogs.com/LBSer/p/4853234.html" target="_blank" rel="noopener noreffer">《你应该知道的RPC原理》</a></li>
</ul>
<h2 id="数据库中间件">数据库中间件</h2>
<h3 id="sharding-jdbc">Sharding Jdbc</h3>
<ul>
<li><a href="http://shardingjdbc.io/" target="_blank" rel="noopener noreffer">官网</a></li>
<li><a href="http://www.iocoder.cn/categories/Sharding-JDBC/?vip&amp;architect-awesome" target="_blank" rel="noopener noreffer">源码解析</a></li>
</ul>
<h2 id="日志系统">日志系统</h2>
<h3 id="日志搜集">日志搜集</h3>
<ul>
<li><a href="http://cjting.me/misc/build-log-system-with-elkb/" target="_blank" rel="noopener noreffer">《从零开始搭建一个ELKB日志收集系统》</a></li>
<li><a href="https://blog.csdn.net/lzw_2006/article/details/51280058" target="_blank" rel="noopener noreffer">《用ELK搭建简单的日志收集分析系统》</a></li>
<li><a href="https://www.cnblogs.com/beginmind/p/6058194.html" target="_blank" rel="noopener noreffer">《日志收集系统-探究》</a></li>
</ul>
<h2 id="配置中心">配置中心</h2>
<ul>
<li>
<p><a href="https://github.com/ctripcorp/apollo" target="_blank" rel="noopener noreffer">Apollo - 携程开源的配置中心应用</a></p>
<ul>
<li>Spring Boot 和 Spring Cloud</li>
<li>支持推、拉模式更新配置</li>
<li>支持多种语言</li>
</ul>
</li>
<li>
<p><a href="https://blog.csdn.net/u011320740/article/details/78742625" target="_blank" rel="noopener noreffer">《基于zookeeper实现统一配置管理》</a></p>
</li>
<li>
<p><a href="https://www.cnblogs.com/shamo89/p/8016908.html" target="_blank" rel="noopener noreffer">《 Spring Cloud Config 分布式配置中心使用教程》</a></p>
</li>
</ul>
<p>servlet 3.0 异步特性可用于配置中心的客户端</p>
<ul>
<li><a href="https://www.cnblogs.com/dogdogwang/p/7151866.html" target="_blank" rel="noopener noreffer">《servlet3.0 新特性——异步处理》</a></li>
</ul>
<h2 id="api-网关">API 网关</h2>
<p>主要职责：请求转发、安全认证、协议转换、容灾。</p>
<ul>
<li>
<p><a href="http://yunlzheng.github.io/2017/03/14/the-things-about-api-gateway/" target="_blank" rel="noopener noreffer">《API网关那些儿》</a></p>
</li>
<li>
<p><a href="http://www.infoq.com/cn/news/2016/07/API-background-architecture-floo" target="_blank" rel="noopener noreffer">《谈API网关的背景、架构以及落地方案》</a></p>
</li>
<li>
<p><a href="https://blog.csdn.net/zhanglh046/article/details/78651993" target="_blank" rel="noopener noreffer">《使用Zuul构建API Gateway》</a></p>
</li>
<li>
<p><a href="http://www.iocoder.cn/categories/Spring-Cloud-Gateway/?vip&amp;architect-awesome" target="_blank" rel="noopener noreffer">《Spring Cloud Gateway 源码解析》</a></p>
</li>
<li>
<p><a href="https://mp.weixin.qq.com/s/LIq2CiXJQmmjBC0yvYLY5A" target="_blank" rel="noopener noreffer">《HTTP API网关选择之一Kong介绍》</a></p>
</li>
</ul>
<h1 id="网络">网络</h1>
<h2 id="协议">协议</h2>
<h3 id="osi-七层协议">OSI 七层协议</h3>
<ul>
<li><a href="https://www.cnblogs.com/Robin-YB/p/6668762.html" target="_blank" rel="noopener noreffer">《OSI七层协议模型、TCP/IP四层模型学习笔记》</a></li>
</ul>
<h3 id="tcpip">TCP/IP</h3>
<ul>
<li><a href="https://www.cnblogs.com/onepixel/p/7092302.html" target="_blank" rel="noopener noreffer">《深入浅出 TCP/IP 协议》</a></li>
<li><a href="https://blog.csdn.net/whuslei/article/details/6667471/" target="_blank" rel="noopener noreffer">《TCP协议中的三次握手和四次挥手》</a></li>
</ul>
<h3 id="http">HTTP</h3>
<ul>
<li><a href="https://www.cnblogs.com/wangning528/p/6388464.html" target="_blank" rel="noopener noreffer">《http协议详解(超详细)》</a></li>
</ul>
<h3 id="http20">HTTP2.0</h3>
<ul>
<li><a href="https://blog.csdn.net/zhuyiquan/article/details/69257126" target="_blank" rel="noopener noreffer">《HTTP 2.0 原理详细分析》</a></li>
<li><a href="https://blog.csdn.net/u012657197/article/details/77877840" target="_blank" rel="noopener noreffer">《HTTP2.0的基本单位为二进制帧》</a>
<ul>
<li>利用二进制帧负责传输。</li>
<li>多路复用。</li>
</ul>
</li>
</ul>
<h3 id="https">HTTPS</h3>
<ul>
<li>
<p><a href="https://www.cnblogs.com/zhangshitong/p/6478721.html" target="_blank" rel="noopener noreffer">《https原理通俗了解》</a></p>
<ul>
<li>使用非对称加密协商加密算法</li>
<li>使用对称加密方式传输数据</li>
<li>使用第三方机构签发的证书，来加密公钥，用于公钥的安全传输、防止被中间人串改。</li>
</ul>
</li>
<li>
<p><a href="https://blog.csdn.net/enweitech/article/details/53213862" target="_blank" rel="noopener noreffer">《八大免费SSL证书-给你的网站免费添加Https安全加密》</a></p>
</li>
</ul>
<h2 id="网络模型">网络模型</h2>
<ul>
<li>
<p><a href="http://blog.51cto.com/litaotao/1289790" target="_blank" rel="noopener noreffer">《web优化必须了解的原理之I/o的五种模型和web的三种工作模式》</a></p>
<ul>
<li>五种I/O模型：阻塞I/O，非阻塞I/O，I/O复用、事件(信号)驱动I/O、异步I/O，前四种I/O属于同步操作，I/O的第一阶段不同、第二阶段相同，最后的一种则属于异步操作。</li>
<li>三种 Web Server 工作方式：Prefork(多进程)、Worker方式(线程方式)、Event方式。</li>
</ul>
</li>
<li>
<p><a href="http://www.cnblogs.com/Anker/p/3265058.html" target="_blank" rel="noopener noreffer">《select、poll、epoll之间的区别总结》</a></p>
<ul>
<li>select，poll，epoll本质上都是同步I/O，因为他们都需要在读写事件就绪后自己负责进行读写，也就是说这个读写过程是阻塞的。</li>
<li>select 有打开文件描述符数量限制，默认1024（2048 for x64），100万并发，就要用1000个进程、切换开销大；poll采用链表结构，没有数量限制。</li>
<li>select，poll “醒着”的时候要遍历整个fd集合，而epoll在“醒着”的时候只要判断一下就绪链表是否为空就行了，通过回调机制节省大量CPU时间；select，poll每次调用都要把fd集合从用户态往内核态拷贝一次，而epoll只要一次拷贝。</li>
<li>poll会随着并发增加，性能逐渐下降，epoll采用红黑树结构，性能稳定，不会随着连接数增加而降低。</li>
</ul>
</li>
<li>
<p><a href="http://xingyunbaijunwei.blog.163.com/blog/static/76538067201241685556302/" target="_blank" rel="noopener noreffer">《select，poll，epoll比较  》</a></p>
<ul>
<li>在连接数少并且连接都十分活跃的情况下，select和poll的性能可能比epoll好，毕竟epoll的通知机制需要很多函数回调。</li>
</ul>
</li>
<li>
<p><a href="https://www.cnblogs.com/geason/p/5774096.html" target="_blank" rel="noopener noreffer">《深入理解Java NIO》</a></p>
<ul>
<li>NIO 是一种同步非阻塞的 IO 模型。同步是指线程不断轮询 IO 事件是否就绪，非阻塞是指线程在等待 IO 的时候，可以同时做其他任务</li>
</ul>
</li>
<li>
<p><a href="https://blog.csdn.net/skiof007/article/details/52873421" target="_blank" rel="noopener noreffer">《BIO与NIO、AIO的区别》</a></p>
</li>
<li>
<p><a href="https://blog.csdn.net/u013074465/article/details/46276967" target="_blank" rel="noopener noreffer">《两种高效的服务器设计模型：Reactor和Proactor模型》</a></p>
</li>
</ul>
<h3 id="epoll">Epoll</h3>
<ul>
<li><a href="https://www.cnblogs.com/fnlingnzb-learner/p/5835573.html" target="_blank" rel="noopener noreffer">《epoll使用详解（精髓）》</a></li>
</ul>
<h3 id="java-nio">Java NIO</h3>
<ul>
<li><a href="https://www.cnblogs.com/geason/p/5774096.html" target="_blank" rel="noopener noreffer">《深入理解Java NIO》</a></li>
<li><a href="https://blog.csdn.net/xidianliuy/article/details/51612676" target="_blank" rel="noopener noreffer">《Java NIO编写Socket服务器的一个例子》</a></li>
</ul>
<h3 id="kqueue">kqueue</h3>
<ul>
<li><a href="http://www.cnblogs.com/luminocean/p/5631336.html" target="_blank" rel="noopener noreffer">《kqueue用法简介》</a></li>
</ul>
<h2 id="连接和短连接">连接和短连接</h2>
<ul>
<li><a href="https://www.cnblogs.com/pangguoping/p/5571422.html" target="_blank" rel="noopener noreffer">《TCP/IP系列——长连接与短连接的区别》</a></li>
</ul>
<h2 id="框架">框架</h2>
<ul>
<li><a href="https://blog.csdn.net/excellentyuxiao/article/details/53390408" target="_blank" rel="noopener noreffer">《Netty原理剖析》</a>
<ul>
<li>Reactor 模式介绍。</li>
<li>Netty 是 Reactor 模式的一种实现。</li>
</ul>
</li>
</ul>
<h2 id="零拷贝zero-copy">零拷贝（Zero-copy）</h2>
<ul>
<li><a href="https://www.cnblogs.com/xys1228/p/6088805.html" target="_blank" rel="noopener noreffer">《对于 Netty ByteBuf 的零拷贝(Zero Copy) 的理解》</a>
<ul>
<li>多个物理分离的buffer，通过逻辑上合并成为一个，从而避免了数据在内存之间的拷贝。</li>
</ul>
</li>
</ul>
<h2 id="序列化二进制协议">序列化(二进制协议)</h2>
<h3 id="hessian">Hessian</h3>
<ul>
<li><a href="https://www.cnblogs.com/happyday56/p/4268249.html" target="_blank" rel="noopener noreffer">《Hessian原理分析》</a>
Binary-RPC;不仅仅是序列化</li>
</ul>
<h3 id="protobuf">Protobuf</h3>
<ul>
<li>
<p><a href="https://blog.csdn.net/antgan/article/details/52103966" target="_blank" rel="noopener noreffer">《Protobuf协议的Java应用例子》</a>
Goolge出品、占用空间和效率完胜其他序列化类库，如Hessian；需要编写  .proto 文件。</p>
</li>
<li>
<p><a href="https://worktile.com/tech/share/prototol-buffers" target="_blank" rel="noopener noreffer">《Protocol Buffers序列化协议及应用》</a></p>
<ul>
<li>关于协议的解释；缺点：可读性差;</li>
</ul>
</li>
<li>
<p><a href="https://blog.csdn.net/eric520zenobia/article/details/53766571" target="_blank" rel="noopener noreffer">《简单的使用 protobuf 和 protostuff》</a></p>
<ul>
<li>protostuff 的好处是不用写 .proto 文件，Java 对象直接就可以序列化。</li>
</ul>
</li>
</ul>
<h1 id="数据库">数据库</h1>
<h2 id="基础理论">基础理论</h2>
<h3 id="关系数据库设计的三大范式">关系数据库设计的三大范式</h3>
<ul>
<li><a href="https://www.cnblogs.com/waj6511988/p/7027127.html" target="_blank" rel="noopener noreffer">《数据库的三大范式以及五大约束》</a>
<ul>
<li>第一范式：数据表中的每一列（每个字段）必须是不可拆分的最小单元，也就是确保每一列的原子性；</li>
<li>第二范式（2NF）：满足1NF后，要求表中的所有列，都必须依赖于主键，而不能有任何一列与主键没有关系，也就是说一个表只描述一件事情；</li>
<li>第三范式：必须先满足第二范式（2NF），要求：表中的每一列只与主键直接相关而不是间接相关，（表中的每一列只能依赖于主键）；</li>
</ul>
</li>
</ul>
<h2 id="mysql">MySQL</h2>
<h3 id="原理">原理</h3>
<ul>
<li>
<p><a href="http://www.admin10000.com/document/5372.html" target="_blank" rel="noopener noreffer">《MySQL的InnoDB索引原理详解》</a></p>
</li>
<li>
<p><a href="https://blog.csdn.net/xifeijian/article/details/20316775" target="_blank" rel="noopener noreffer">《MySQL存储引擎－－MyISAM与InnoDB区别》</a></p>
<ul>
<li>两种类型最主要的差别就是Innodb 支持事务处理与外键和行级锁</li>
</ul>
</li>
<li>
<p><a href="https://www.2cto.com/database/201211/172380.html" target="_blank" rel="noopener noreffer">《myisam和innodb索引实现的不同》</a></p>
</li>
</ul>
<h3 id="innodb">InnoDB</h3>
<ul>
<li><a href="https://my.oschina.net/kailuncen/blog/1504217" target="_blank" rel="noopener noreffer">《一篇文章带你读懂Mysql和InnoDB》</a></li>
</ul>
<h3 id="优化">优化</h3>
<ul>
<li>
<p><a href="http://vdisk.weibo.com/s/muWOT" target="_blank" rel="noopener noreffer">《MySQL36条军规》</a></p>
</li>
<li>
<p><a href="https://www.cnblogs.com/zhouyusheng/p/8038224.html" target="_blank" rel="noopener noreffer">《MYSQL性能优化的最佳20+条经验》</a></p>
</li>
<li>
<p><a href="https://blog.csdn.net/when_less_is_more/article/details/70187459" target="_blank" rel="noopener noreffer">《SQL优化之道》</a></p>
</li>
<li>
<p><a href="https://www.cnblogs.com/sivkun/p/7518540.html" target="_blank" rel="noopener noreffer">《mysql数据库死锁的产生原因及解决办法》</a></p>
</li>
<li>
<p><a href="https://blog.csdn.net/monkey_d_feilong/article/details/52291556" target="_blank" rel="noopener noreffer">《导致索引失效的可能情况》</a></p>
</li>
<li>
<p><a href="https://blog.csdn.net/zy_281870667/article/details/51604540" target="_blank" rel="noopener noreffer">《 MYSQL分页limit速度太慢优化方法》</a></p>
<ul>
<li>原则上就是缩小扫描范围。</li>
</ul>
</li>
</ul>
<h3 id="索引">索引</h3>
<h4 id="聚集索引-非聚集索引">聚集索引, 非聚集索引</h4>
<ul>
<li><a href="https://blog.csdn.net/no_endless/article/details/77073549" target="_blank" rel="noopener noreffer">《MySQL 聚集索引/非聚集索引简述》</a></li>
<li><a href="https://www.cnblogs.com/zlcxbb/p/5757245.html" target="_blank" rel="noopener noreffer">《MyISAM和InnoDB的索引实现》</a></li>
</ul>
<p>MyISAM 是非聚集，InnoDB 是聚集</p>
<h4 id="复合索引">复合索引</h4>
<ul>
<li>
<p><a href="https://www.cnblogs.com/summer0space/p/7247778.html" target="_blank" rel="noopener noreffer">《复合索引的优点和注意事项》</a></p>
<ul>
<li>文中有一处错误：</li>
</ul>
<blockquote>
<p>对于复合索引,在查询使用时,最好将条件顺序按找索引的顺序,这样效率最高; select * from table1 where col1=A AND col2=B AND col3=D 如果使用 where col2=B AND col1=A 或者 where col2=B 将不会使用索引</p>
</blockquote>
<ul>
<li>原文中提到索引是按照“col1，col2，col3”的顺序创建的，而mysql在按照最左前缀的索引匹配原则，且会自动优化 where 条件的顺序，当条件中只有 col2=B AND col1=A 时，会自动转化为 col1=A AND col2=B，所以依然会使用索引。</li>
</ul>
</li>
<li>
<p><a href="https://www.cnblogs.com/acode/p/7489258.html" target="_blank" rel="noopener noreffer">《MySQL查询where条件的顺序对查询效率的影响》</a></p>
</li>
</ul>
<h4 id="自适应哈希索引ahi">自适应哈希索引(AHI)</h4>
<ul>
<li><a href="https://blog.csdn.net/Linux_ever/article/details/62043708" target="_blank" rel="noopener noreffer">《InnoDB存储引擎——自适应哈希索引》</a></li>
</ul>
<h3 id="explain">explain</h3>
<ul>
<li><a href="https://segmentfault.com/a/1190000008131735" target="_blank" rel="noopener noreffer">《MySQL 性能优化神器 Explain 使用分析》</a></li>
</ul>
<h2 id="nosql">NoSQL</h2>
<h3 id="mongodb">MongoDB</h3>
<ul>
<li><a href="http://www.runoob.com/mongodb/mongodb-tutorial.html" target="_blank" rel="noopener noreffer">MongoDB 教程</a></li>
<li><a href="http://mxdxm.iteye.com/blog/2093603" target="_blank" rel="noopener noreffer">《Mongodb相对于关系型数据库的优缺点》</a>
<ul>
<li>优点：弱一致性（最终一致），更能保证用户的访问速度；内置GridFS，支持大容量的存储；Schema-less 数据库，不用预先定义结构；内置Sharding；相比于其他NoSQL，第三方支持丰富；性能优越；</li>
<li>缺点：mongodb不支持事务操作；mongodb占用空间过大；MongoDB没有如MySQL那样成熟的维护工具，这对于开发和IT运营都是个值得注意的地方；</li>
</ul>
</li>
</ul>
<h3 id="hbase">Hbase</h3>
<ul>
<li>
<p><a href="http://www.thebigdata.cn/HBase/35831.html" target="_blank" rel="noopener noreffer">《简明 HBase 入门教程（开篇）》</a></p>
</li>
<li>
<p><a href="https://www.cnblogs.com/qiaoyihang/p/6246424.html" target="_blank" rel="noopener noreffer">《深入学习HBase架构原理》</a></p>
</li>
<li>
<p><a href="https://blog.csdn.net/youzhouliu/article/details/67632882" target="_blank" rel="noopener noreffer">《传统的行存储和（HBase）列存储的区别》</a></p>
</li>
<li>
<p><a href="https://blog.csdn.net/lifuxiangcaohui/article/details/39891099" target="_blank" rel="noopener noreffer">《Hbase与传统数据库的区别》</a></p>
<ul>
<li>空数据不存储，节省空间，且适用于并发。</li>
</ul>
</li>
<li>
<p><a href="https://blog.csdn.net/u014091123/article/details/73163088" target="_blank" rel="noopener noreffer">《HBase Rowkey设计》</a></p>
<ul>
<li>rowkey 按照字典顺序排列，便于批量扫描。</li>
<li>通过散列可以避免热点。</li>
</ul>
</li>
</ul>
<h1 id="搜索引擎">搜索引擎</h1>
<h2 id="搜索引擎原理">搜索引擎原理</h2>
<ul>
<li><a href="https://www.jianshu.com/p/0193dc44135b" target="_blank" rel="noopener noreffer">《倒排索引&ndash;搜索引擎入门》</a></li>
</ul>
<h2 id="lucene">Lucene</h2>
<ul>
<li><a href="https://www.cnblogs.com/rodge-run/p/6551152.html" target="_blank" rel="noopener noreffer">《Lucene入门简介》</a></li>
</ul>
<h2 id="elasticsearch">Elasticsearch</h2>
<ul>
<li><a href="https://blog.csdn.net/laoyang360/article/details/52244917" target="_blank" rel="noopener noreffer">《Elasticsearch学习，请先看这一篇！》</a></li>
<li><a href="https://blog.csdn.net/cyony/article/details/65437708" target="_blank" rel="noopener noreffer">《Elasticsearch索引原理》</a></li>
</ul>
<h2 id="solr">Solr</h2>
<ul>
<li><a href="https://blog.csdn.net/u011936655/article/details/51960005" target="_blank" rel="noopener noreffer">《 Apache Solr入门教程》</a></li>
<li><a href="https://blog.csdn.net/convict_eva/article/details/53537837" target="_blank" rel="noopener noreffer">《elasticsearch与solr比较》</a></li>
</ul>
<h2 id="sphinx">sphinx</h2>
<ul>
<li><a href="http://blog.jobbole.com/101672/" target="_blank" rel="noopener noreffer">《Sphinx 的介绍和原理探索》</a></li>
</ul>
<h1 id="性能">性能</h1>
<h2 id="性能优化方法论">性能优化方法论</h2>
<ul>
<li>
<p><a href="https://blog.csdn.net/huangwenyi1010/article/details/72673447?ref=myread" target="_blank" rel="noopener noreffer">《15天的性能优化工作，5方面的调优经验》</a></p>
<ul>
<li>代码层面、业务层面、数据库层面、服务器层面、前端优化。</li>
</ul>
</li>
<li>
<p><a href="https://blog.csdn.net/tenglizhe/article/details/44563135" target="_blank" rel="noopener noreffer">《系统性能优化的几个方面》</a></p>
</li>
</ul>
<h2 id="容量评估">容量评估</h2>
<ul>
<li><a href="https://blog.csdn.net/u012528360/article/details/70054156" target="_blank" rel="noopener noreffer">《联网性能与容量评估的方法论和典型案例》</a></li>
<li><a href="https://mp.weixin.qq.com/s?__biz=MjM5ODYxMDA5OQ==&amp;mid=2651959542&amp;idx=1&amp;sn=2494bbea9a855e0e1c3ccd6d2562a600&amp;scene=21#wechat_redirect" target="_blank" rel="noopener noreffer">《互联网架构，如何进行容量设计？》</a>
<ul>
<li>评估总访问量、评估平均访问量QPS、评估高峰QPS、评估系统、单机极限QPS</li>
</ul>
</li>
</ul>
<h2 id="cdn-网络">CDN 网络</h2>
<ul>
<li><a href="https://www.cnblogs.com/wxiaona/p/5867685.html" target="_blank" rel="noopener noreffer">《CDN加速原理》</a></li>
<li><a href="https://www.zhihu.com/question/20536932" target="_blank" rel="noopener noreffer">《国内有哪些比较好的 CDN？》</a></li>
</ul>
<h2 id="连接池">连接池</h2>
<ul>
<li><a href="https://blog.csdn.net/fysuccess/article/details/66972554" target="_blank" rel="noopener noreffer">《主流Java数据库连接池比较与开发配置实战》</a></li>
</ul>
<h2 id="性能调优">性能调优</h2>
<ul>
<li><a href="https://blog.csdn.net/yethyeth/article/details/73266455" target="_blank" rel="noopener noreffer">《九大Java性能调试工具，必备至少一款》</a></li>
</ul>
<h1 id="大数据">大数据</h1>
<h2 id="流式计算">流式计算</h2>
<h3 id="storm">Storm</h3>
<ul>
<li><a href="http://storm.apache.org/" target="_blank" rel="noopener noreffer">官方网站</a></li>
<li><a href="https://blog.csdn.net/uisoul/article/details/77989927" target="_blank" rel="noopener noreffer">《最详细的Storm入门教程》</a></li>
</ul>
<h3 id="flink">Flink</h3>
<ul>
<li><a href="https://blog.csdn.net/lisi1129/article/details/54844919" target="_blank" rel="noopener noreffer">《Flink之一 Flink基本原理介绍》</a></li>
</ul>
<h3 id="kafka-stream">Kafka Stream</h3>
<ul>
<li><a href="https://yq.aliyun.com/articles/58382" target="_blank" rel="noopener noreffer">《Kafka Stream调研：一种轻量级流计算模式》</a></li>
</ul>
<h3 id="应用场景-1">应用场景</h3>
<p>例如：</p>
<ul>
<li>广告相关实时统计；</li>
<li>推荐系统用户画像标签实时更新；</li>
<li>线上服务健康状况实时监测；</li>
<li>实时榜单；</li>
<li>实时数据统计。</li>
</ul>
<h2 id="hadoop">Hadoop</h2>
<ul>
<li><a href="https://blog.csdn.net/houbin0912/article/details/72967178" target="_blank" rel="noopener noreffer">《用通俗易懂的话说下hadoop是什么,能做什么》</a></li>
<li><a href="http://gitbook.cn/books/5954c9600326c7705af8a92a/index.html" target="_blank" rel="noopener noreffer">《史上最详细的Hadoop环境搭建》</a></li>
</ul>
<h3 id="hdfs">HDFS</h3>
<ul>
<li><a href="https://segmentfault.com/a/1190000011575458" target="_blank" rel="noopener noreffer">《【Hadoop学习】HDFS基本原理》</a></li>
</ul>
<h3 id="mapreduce">MapReduce</h3>
<ul>
<li><a href="https://blog.csdn.net/oppo62258801/article/details/72884633" target="_blank" rel="noopener noreffer">《用通俗易懂的大白话讲解Map/Reduce原理》</a></li>
<li><a href="https://blog.csdn.net/foye12/article/details/78358292" target="_blank" rel="noopener noreffer">《 简单的map-reduce的java例子》</a></li>
</ul>
<h3 id="yarn">Yarn</h3>
<ul>
<li><a href="http://www.cnblogs.com/codeOfLife/p/5492740.html" target="_blank" rel="noopener noreffer">《初步掌握Yarn的架构及原理》</a></li>
</ul>
<h2 id="spark">Spark</h2>
<ul>
<li><a href="http://www.cnblogs.com/tgzhu/p/5818374.html" target="_blank" rel="noopener noreffer">《Spark(一): 基本架构及原理》</a></li>
<li><a href="http://dblab.xmu.edu.cn/blog/1709-2/" target="_blank" rel="noopener noreffer">《子雨大数据之Spark入门教程(Python版)》</a></li>
</ul>
<h1 id="安全">安全</h1>
<h2 id="web-安全">web 安全</h2>
<h3 id="xss">XSS</h3>
<ul>
<li><a href="https://blog.csdn.net/qq_21956483/article/details/54377947" target="_blank" rel="noopener noreffer">《xss攻击原理与解决方法》</a></li>
</ul>
<h3 id="csrf">CSRF</h3>
<ul>
<li><a href="https://coderxing.gitbooks.io/architecture-evolution/di-san-pian-ff1a-bu-luo/641-web-an-quan-fang-fan/6412-csrf.html" target="_blank" rel="noopener noreffer">《CSRF原理及防范》</a></li>
</ul>
<h3 id="sql-注入">SQL 注入</h3>
<ul>
<li><a href="https://coderxing.gitbooks.io/architecture-evolution/di-san-pian-ff1a-bu-luo/641-web-an-quan-fang-fan/6413-sql-zhu-ru.html" target="_blank" rel="noopener noreffer">《SQL注入》</a></li>
</ul>
<h3 id="hash-dos">Hash Dos</h3>
<ul>
<li><a href="http://www.freebuf.com/articles/web/14199.html" target="_blank" rel="noopener noreffer">《邪恶的JAVA HASH DOS攻击》</a>
<ul>
<li>利用JsonObject 上传大Json，JsonObject 底层使用HashMap；不同的数据产生相同的hash值，使得构建Hash速度变慢，耗尽CPU。</li>
</ul>
</li>
<li><a href="http://blog.it2048.cn/article_hash-collision.html" target="_blank" rel="noopener noreffer">《一种高级的DoS攻击-Hash碰撞攻击》</a></li>
<li><a href="http://www.iteye.com/news/23939/" target="_blank" rel="noopener noreffer">《关于Hash Collision DoS漏洞：解析与解决方案》</a></li>
</ul>
<h3 id="脚本注入">脚本注入</h3>
<ul>
<li><a href="https://coderxing.gitbooks.io/architecture-evolution/di-san-pian-ff1a-bu-luo/641-web-an-quan-fang-fan/6414-shang-chuan-wen-jian-guo-lv.html" target="_blank" rel="noopener noreffer">《上传文件漏洞原理及防范》</a></li>
</ul>
<h3 id="漏洞扫描工具">漏洞扫描工具</h3>
<ul>
<li><a href="https://coderxing.gitbooks.io/architecture-evolution/di-san-pian-ff1a-bu-luo/6421-dvwa.html" target="_blank" rel="noopener noreffer">《DVWA》</a></li>
<li><a href="https://coderxing.gitbooks.io/architecture-evolution/di-san-pian-ff1a-bu-luo/w3af.html" target="_blank" rel="noopener noreffer">W3af</a></li>
<li><a href="https://blog.csdn.net/xygg0801/article/details/53610640" target="_blank" rel="noopener noreffer">OpenVAS详解</a></li>
</ul>
<h3 id="验证码">验证码</h3>
<ul>
<li>
<p><a href="https://blog.csdn.net/niaonao/article/details/51112686" target="_blank" rel="noopener noreffer">《验证码原理分析及实现》</a></p>
</li>
<li>
<p><a href="https://my.oschina.net/jiangbianwanghai/blog/1031031" target="_blank" rel="noopener noreffer">《详解滑动验证码的实现原理》</a></p>
<ul>
<li>滑动验证码是根据人在滑动滑块的响应时间，拖拽速度，时间，位置，轨迹，重试次数等来评估风险。</li>
</ul>
</li>
<li>
<p><a href="https://www.cnblogs.com/xcj26/p/5242758.html" target="_blank" rel="noopener noreffer">《淘宝滑动验证码研究》</a></p>
</li>
</ul>
<h2 id="ddos-防范">DDoS 防范</h2>
<ul>
<li><a href="http://netsecurity.51cto.com/art/201601/503799.htm" target="_blank" rel="noopener noreffer">《学习手册：DDoS的攻击方式及防御手段》</a></li>
<li><a href="http://netsecurity.51cto.com/art/201406/442756.htm" target="_blank" rel="noopener noreffer">《免费DDoS攻击测试工具大合集》</a></li>
</ul>
<h2 id="用户隐私信息保护">用户隐私信息保护</h2>
<ol>
<li>用户密码非明文保存，加动态salt。</li>
<li>身份证号，手机号如果要显示，用 “*” 替代部分字符。</li>
<li>联系方式在的显示与否由用户自己控制。</li>
<li>TODO</li>
</ol>
<ul>
<li>
<p><a href="https://zhidao.baidu.com/question/1988017976673661587.html" target="_blank" rel="noopener noreffer">《个人隐私包括哪些》</a></p>
</li>
<li>
<p><a href="https://www.zhihu.com/question/20137108" target="_blank" rel="noopener noreffer">《在互联网上，隐私的范围包括哪些？》</a></p>
</li>
<li>
<p><a href="https://coderxing.gitbooks.io/architecture-evolution/di-san-pian-ff1a-bu-luo/642-shu-ju-jia-mi/6425-jia-mi-chang-jing-ff1a-yong-hu-mi-ma-bao-cun.html" target="_blank" rel="noopener noreffer">《用户密码保存》</a></p>
</li>
</ul>
<h2 id="序列化漏洞">序列化漏洞</h2>
<ul>
<li><a href="https://blog.chaitin.cn/2015-11-11_java_unserialize_rce/" target="_blank" rel="noopener noreffer">《Lib之过？Java反序列化漏洞通用利用分析》</a></li>
</ul>
<h2 id="加密解密">加密解密</h2>
<h3 id="对称加密">对称加密</h3>
<ul>
<li><a href="https://coderxing.gitbooks.io/architecture-evolution/di-san-pian-ff1a-bu-luo/642-shu-ju-jia-mi/6421-chang-jian-dui-cheng-jia-mi-suan-fa.html" target="_blank" rel="noopener noreffer">《常见对称加密算法》</a>
<ul>
<li>DES、3DES、Blowfish、AES</li>
<li>DES 采用 56位秘钥，Blowfish 采用1到448位变长秘钥，AES 128，192和256位长度的秘钥。</li>
<li>DES 秘钥太短（只有56位）算法目前已经被 AES 取代，并且 AES 有硬件加速，性能很好。</li>
</ul>
</li>
</ul>
<h3 id="哈希算法">哈希算法</h3>
<ul>
<li>
<p><a href="https://coderxing.gitbooks.io/architecture-evolution/di-san-pian-ff1a-bu-luo/642-shu-ju-jia-mi/6422-chang-jian-ha-xi-suan-fa-and-hmac.html" target="_blank" rel="noopener noreffer">《常用的哈希算法》</a></p>
<ul>
<li>MD5 和 SHA-1 已经不再安全，已被弃用。</li>
<li>目前 SHA-256 是比较安全的。</li>
</ul>
</li>
<li>
<p><a href="https://blog.csdn.net/zhangruhong168/article/details/78033202" target="_blank" rel="noopener noreffer">《基于Hash摘要签名的公网URL签名验证设计方案》</a></p>
</li>
</ul>
<h3 id="非对称加密">非对称加密</h3>
<ul>
<li><a href="https://coderxing.gitbooks.io/architecture-evolution/di-san-pian-ff1a-bu-luo/642-shu-ju-jia-mi/6424-chang-yong-fei-dui-cheng-jia-mi-suan-fa.html" target="_blank" rel="noopener noreffer">《常见非对称加密算法》</a>
<ul>
<li>
<p>RSA、DSA、ECDSA(螺旋曲线加密算法)</p>
</li>
<li>
<p>和 RSA 不同的是 DSA 仅能用于数字签名，不能进行数据加密解密，其安全性和RSA相当，但其性能要比RSA快。</p>
</li>
<li>
<p>256位的ECC秘钥的安全性等同于3072位的RSA秘钥。</p>
<p><a href="http://baijiahao.baidu.com/s?id=1578348858092033763&amp;wfr=spider&amp;for=pc" target="_blank" rel="noopener noreffer">《区块链的加密技术》</a></p>
</li>
</ul>
</li>
</ul>
<h2 id="服务器安全">服务器安全</h2>
<ul>
<li><a href="http://www.freebuf.com/articles/system/121540.html" target="_blank" rel="noopener noreffer">《Linux强化论：15步打造一个安全的Linux服务器》</a></li>
</ul>
<h2 id="数据安全">数据安全</h2>
<h3 id="数据备份">数据备份</h3>
<p>TODO</p>
<h2 id="网络隔离">网络隔离</h2>
<h3 id="内外网分离">内外网分离</h3>
<p>TODO</p>
<h3 id="登录跳板机">登录跳板机</h3>
<p>在内外环境中通过跳板机登录到线上主机。</p>
<ul>
<li><a href="http://blog.51cto.com/zero01/2062618" target="_blank" rel="noopener noreffer">《搭建简易堡垒机》</a></li>
</ul>
<h2 id="授权认证">授权、认证</h2>
<h3 id="rbac">RBAC</h3>
<ul>
<li><a href="https://www.cnblogs.com/zq8024/p/5003050.html" target="_blank" rel="noopener noreffer">《基于组织角色的权限设计》</a></li>
<li><a href="https://www.cnblogs.com/shijiaqi1066/p/3793894.html" target="_blank" rel="noopener noreffer">《权限系统与RBAC模型概述》</a></li>
<li><a href="https://blog.csdn.net/he90227/article/details/38663553" target="_blank" rel="noopener noreffer">《Spring整合Shiro做权限控制模块详细案例分析》</a></li>
</ul>
<h3 id="oauth20">OAuth2.0</h3>
<ul>
<li><a href="http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html" target="_blank" rel="noopener noreffer">《理解OAuth 2.0》</a></li>
<li><a href="https://www.cnblogs.com/flashsun/p/7424071.html" target="_blank" rel="noopener noreffer">《一张图搞定OAuth2.0》</a></li>
</ul>
<h3 id="双因素认证2fa">双因素认证（2FA）</h3>
<p>2FA - Two-factor authentication，用于加强登录验证</p>
<p>常用做法是 登录密码 + 手机验证码（或者令牌Key，类似于与网银的 USB key）</p>
<ul>
<li>【《双因素认证（2FA）教程》】(<a href="http://www.ruanyifeng.com/blog/2017/11/2fa-tutorial.html">http://www.ruanyifeng.com/blog/2017/11/2fa-tutorial.html</a>)</li>
</ul>
<h3 id="单点登录sso">单点登录(SSO)</h3>
<ul>
<li>
<p><a href="https://www.cnblogs.com/ywlaker/p/6113927.html" target="_blank" rel="noopener noreffer">《单点登录原理与简单实现》</a></p>
</li>
<li>
<p><a href="https://github.com/apereo/cas" target="_blank" rel="noopener noreffer">CAS单点登录框架</a></p>
</li>
</ul>
<h1 id="常用开源框架">常用开源框架</h1>
<h2 id="开源协议">开源协议</h2>
<ul>
<li>
<p><a href="https://coderxing.gitbooks.io/architecture-evolution/chapter1/di-yi-zhang-ff1a-zhun-bei-qi-cheng/12-guan-yu-kai-yuan/123-kai-yuan-xie-yi-de-xuan-ze.html" target="_blank" rel="noopener noreffer">《开源协议的选择》</a></p>
</li>
<li>
<p><a href="http://choosealicense.online/" target="_blank" rel="noopener noreffer">如何选择一个开源软件协议</a></p>
</li>
</ul>
<h2 id="日志框架">日志框架</h2>
<h3 id="log4jlog4j2">Log4j、Log4j2</h3>
<ul>
<li><a href="https://blog.csdn.net/u012422446/article/details/51199724" target="_blank" rel="noopener noreffer">《log4j 详细讲解》</a></li>
<li><a href="https://blog.csdn.net/vbirdbest/article/details/71751835" target="_blank" rel="noopener noreffer">《log4j2 实际使用详解》</a></li>
<li><a href="https://my.oschina.net/OutOfMemory/blog/789267" target="_blank" rel="noopener noreffer">《Log4j1,Logback以及Log4j2性能测试对比》</a>
<ul>
<li>Log4J 异步日志性能优异。</li>
</ul>
</li>
</ul>
<h3 id="logback">Logback</h3>
<ul>
<li><a href="https://blog.csdn.net/rulon147/article/details/52620541" target="_blank" rel="noopener noreffer">《最全LogBack 详解、含java案例和配置说明》</a></li>
</ul>
<h2 id="orm">ORM</h2>
<ul>
<li><a href="https://blog.csdn.net/sinat_34093604/article/details/53082000" target="_blank" rel="noopener noreffer">《ORM框架使用优缺点》</a>
<ul>
<li>主要目的是为了提高开发效率。</li>
</ul>
</li>
</ul>
<p><strong>MyBatis：</strong></p>
<ul>
<li>
<p><a href="https://www.cnblogs.com/winclpt/articles/7511672.html" target="_blank" rel="noopener noreffer">《mybatis缓存机制详解》</a></p>
<ul>
<li>一级缓存是SqlSession级别的缓存，缓存的数据只在SqlSession内有效</li>
<li>二级缓存是mapper级别的缓存，同一个namespace公用这一个缓存，所以对SqlSession是共享的；使用 LRU 机制清理缓存，通过 cacheEnabled 参数开启。</li>
</ul>
</li>
<li>
<p><a href="https://blog.csdn.net/baidu_32877851/article/details/53959268" target="_blank" rel="noopener noreffer">《MyBatis学习之代码生成器Generator》</a></p>
</li>
</ul>
<h2 id="网络框架">网络框架</h2>
<p>TODO</p>
<h2 id="web-框架">Web 框架</h2>
<h3 id="spring-家族">Spring 家族</h3>
<p><strong>Spring</strong></p>
<ul>
<li><a href="https://www.w3cschool.cn/wkspring/" target="_blank" rel="noopener noreffer">Spring 简明教程</a></li>
</ul>
<p><strong>Spring Boot</strong></p>
<ul>
<li><a href="http://projects.spring.io/spring-boot/" target="_blank" rel="noopener noreffer">官方网站</a></li>
<li><a href="http://blog.didispace.com/Spring-Boot%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/" target="_blank" rel="noopener noreffer">《Spring Boot基础教程》</a></li>
</ul>
<p><strong>Spring Cloud</strong></p>
<ul>
<li><a href="http://springboot.fun/" target="_blank" rel="noopener noreffer">Spring Boot 中文索引站</a></li>
<li><a href="https://springcloud.cc/" target="_blank" rel="noopener noreffer">Spring Cloud 中文文档</a></li>
<li><a href="http://blog.didispace.com/Spring-Cloud%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/" target="_blank" rel="noopener noreffer">《Spring Cloud基础教程》</a></li>
</ul>
<h2 id="工具框架">工具框架</h2>
<ul>
<li><a href="https://www.cnblogs.com/crazylqy/p/4872236.html" target="_blank" rel="noopener noreffer">《Apache Commons 工具类介绍及简单使用》</a></li>
<li><a href="http://ifeve.com/google-guava/" target="_blank" rel="noopener noreffer">《Google guava 中文教程》</a></li>
</ul>
<h1 id="分布式设计">分布式设计</h1>
<h2 id="扩展性设计">扩展性设计</h2>
<ul>
<li>
<p><a href="https://blog.csdn.net/hemin1003/article/details/53633926" target="_blank" rel="noopener noreffer">《架构师不可不知的十大可扩展架构》</a></p>
<ul>
<li>总结下来，通用的套路就是分布、缓存及异步处理。</li>
</ul>
</li>
<li>
<p><a href="https://yq.aliyun.com/articles/38119" target="_blank" rel="noopener noreffer">《可扩展性设计之数据切分》</a></p>
<ul>
<li>水平切分+垂直切分</li>
<li>利用中间件进行分片如，MySQL Proxy。</li>
<li>利用分片策略进行切分，如按照ID取模。</li>
</ul>
</li>
<li>
<p><a href="https://blog.csdn.net/deniro_li/article/details/78458306" target="_blank" rel="noopener noreffer">《说说如何实现可扩展性的大型网站架构》</a></p>
<ul>
<li>分布式服务+消息队列。</li>
</ul>
</li>
<li>
<p><a href="https://blog.csdn.net/chaofanwei/article/details/29191073" target="_blank" rel="noopener noreffer">《大型网站技术架构（七）&ndash;网站的可扩展性架构》</a></p>
</li>
</ul>
<h2 id="稳定性--高可用">稳定性 &amp; 高可用</h2>
<ul>
<li>
<p><a href="https://blog.csdn.net/hustspy1990/article/details/78008324" target="_blank" rel="noopener noreffer">《系统设计：关于高可用系统的一些技术方案》</a></p>
<ul>
<li>可扩展：水平扩展、垂直扩展。 通过冗余部署，避免单点故障。</li>
<li>隔离：避免单一业务占用全部资源。避免业务之间的相互影响 2. 机房隔离避免单点故障。</li>
<li>解耦：降低维护成本，降低耦合风险。减少依赖，减少相互间的影响。</li>
<li>限流：滑动窗口计数法、漏桶算法、令牌桶算法等算法。遇到突发流量时，保证系统稳定。</li>
<li>降级：紧急情况下释放非核心功能的资源。牺牲非核心业务，保证核心业务的高可用。</li>
<li>熔断：异常情况超出阈值进入熔断状态，快速失败。减少不稳定的外部依赖对核心服务的影响。</li>
<li>自动化测试：通过完善的测试，减少发布引起的故障。</li>
<li>灰度发布：灰度发布是速度与安全性作为妥协，能够有效减少发布故障。</li>
</ul>
</li>
<li>
<p><a href="https://coolshell.cn/articles/17459.html" target="_blank" rel="noopener noreffer">《关于高可用的系统》</a></p>
<ul>
<li>设计原则：数据不丢(持久化)；服务高可用(服务副本)；绝对的100%高可用很难，目标是做到尽可能多的9，如99.999%（全年累计只有5分钟）。</li>
</ul>
</li>
</ul>
<h3 id="硬件负载均衡">硬件负载均衡</h3>
<ul>
<li>
<p><a href="https://www.cnblogs.com/wuyun-blog/p/6186198.html" target="_blank" rel="noopener noreffer">《转！！负载均衡器技术Nginx和F5的优缺点对比》</a></p>
<ul>
<li>主要是和F5对比。</li>
</ul>
</li>
<li>
<p><a href="https://www.cnblogs.com/lcword/p/5773296.html" target="_blank" rel="noopener noreffer">《软/硬件负载均衡产品 你知多少？》</a></p>
</li>
</ul>
<h3 id="软件负载均衡">软件负载均衡</h3>
<ul>
<li>
<p><a href="https://www.cnblogs.com/tianzhiliang/articles/2317808.html" target="_blank" rel="noopener noreffer">《几种负载均衡算法》</a>
轮寻、权重、负载、最少连接、QoS</p>
</li>
<li>
<p><a href="https://coderxing.gitbooks.io/architecture-evolution/di-san-pian-ff1a-bu-luo/611-dns-fang-shi.html" target="_blank" rel="noopener noreffer">《DNS负载均衡》</a></p>
<ul>
<li>配置简单，更新速度慢。</li>
</ul>
</li>
<li>
<p><a href="https://coderxing.gitbooks.io/architecture-evolution/di-san-pian-ff1a-bu-luo/613-nginx-fu-zai-jun-heng.html" target="_blank" rel="noopener noreffer">《Nginx负载均衡》</a></p>
<ul>
<li>简单轻量、学习成本低；主要适用于web应用。</li>
</ul>
</li>
<li>
<p><a href="https://www.cnblogs.com/edisonchou/p/4281978.html" target="_blank" rel="noopener noreffer">《借助LVS+Keepalived实现负载均衡 》</a></p>
<ul>
<li>配置比较负载、只支持到4层，性能较高。</li>
</ul>
</li>
<li>
<p><a href="http://www.ttlsa.com/linux/haproxy-study-tutorial/" target="_blank" rel="noopener noreffer">《HAProxy用法详解 全网最详细中文文档》</a></p>
<ul>
<li>支持到七层（比如HTTP）、功能比较全面，性能也不错。</li>
</ul>
</li>
<li>
<p><a href="http://blog.itpub.net/25704976/viewspace-1319781/" target="_blank" rel="noopener noreffer">《Haproxy+Keepalived+MySQL实现读均衡负载》</a></p>
<ul>
<li>主要是用户读请求的负载均衡。</li>
</ul>
</li>
<li>
<p><a href="https://www.cnblogs.com/lylife/p/5584019.html" target="_blank" rel="noopener noreffer">《rabbitmq+haproxy+keepalived实现高可用集群搭建》</a></p>
</li>
</ul>
<h3 id="限流">限流</h3>
<ul>
<li><a href="https://www.cnblogs.com/haoxinyue/p/6792309.html" target="_blank" rel="noopener noreffer">《谈谈高并发系统的限流》</a>
<ul>
<li>计数器：通过滑动窗口计数器，控制单位时间内的请求次数，简单粗暴。</li>
<li>漏桶算法：固定容量的漏桶，漏桶满了就丢弃请求，比较常用。</li>
<li>令牌桶算法：固定容量的令牌桶，按照一定速率添加令牌，处理请求前需要拿到令牌，拿不到令牌则丢弃请求，或进入丢队列，可以通过控制添加令牌的速率，来控制整体速度。Guava 中的 RateLimiter 是令牌桶的实现。</li>
<li>Nginx 限流：通过 <code>limit_req</code> 等模块限制并发连接数。</li>
</ul>
</li>
</ul>
<h3 id="应用层容灾">应用层容灾</h3>
<ul>
<li>
<p><a href="https://segmentfault.com/a/1190000005988895" target="_blank" rel="noopener noreffer">《防雪崩利器：熔断器 Hystrix 的原理与使用》</a></p>
<ul>
<li>雪崩效应原因：硬件故障、硬件故障、程序Bug、重试加大流量、用户大量请求。</li>
<li>雪崩的对策：限流、改进缓存模式(缓存预加载、同步调用改异步)、自动扩容、降级。</li>
<li>Hystrix设计原则：
<ul>
<li>资源隔离：Hystrix通过将每个依赖服务分配独立的线程池进行资源隔离, 从而避免服务雪崩。</li>
<li>熔断开关：服务的健康状况 = 请求失败数 / 请求总数，通过阈值设定和滑动窗口控制开关。</li>
<li>命令模式：通过继承 HystrixCommand 来包装服务调用逻辑。</li>
</ul>
</li>
</ul>
</li>
<li>
<p><a href="https://blog.csdn.net/zeb_perfect/article/details/54135506" target="_blank" rel="noopener noreffer">《缓存穿透，缓存击穿，缓存雪崩解决方案分析》</a></p>
</li>
<li>
<p><a href="https://blog.csdn.net/zeb_perfect/article/details/54135506" target="_blank" rel="noopener noreffer">《缓存击穿、失效以及热点key问题》</a></p>
<ul>
<li>主要策略：失效瞬间：单机使用锁；使用分布式锁；不过期；</li>
<li>热点数据：热点数据单独存储；使用本地缓存；分成多个子key；</li>
</ul>
</li>
</ul>
<h3 id="跨机房容灾">跨机房容灾</h3>
<ul>
<li>
<p><a href="http://dc.idcquan.com/ywgl/71559.shtml" target="_blank" rel="noopener noreffer">《“异地多活”多机房部署经验谈》</a></p>
<ul>
<li>通过自研中间件进行数据同步。</li>
</ul>
</li>
<li>
<p><a href="https://blog.csdn.net/jeffreynicole/article/details/48135093" target="_blank" rel="noopener noreffer">《异地多活（异地双活）实践经验》</a></p>
<ul>
<li>注意延迟问题，多次跨机房调用会将延时放大数倍。</li>
<li>建房间专线很大概率会出现问题，做好运维和程序层面的容错。</li>
<li>不能依赖于程序端数据双写，要有自动同步方案。</li>
<li>数据永不在高延迟和较差网络质量下，考虑同步质量问题。</li>
<li>核心业务和次要业务分而治之，甚至只考虑核心业务。</li>
<li>异地多活监控部署、测试也要跟上。</li>
<li>业务允许的情况下考虑用户分区，尤其是游戏、邮箱业务。</li>
<li>控制跨机房消息体大小，越小越好。</li>
<li>考虑使用docker容器虚拟化技术，提高动态调度能力。</li>
</ul>
</li>
<li>
<p><a href="https://blog.csdn.net/yoara/article/details/38013751" target="_blank" rel="noopener noreffer">容灾技术及建设经验介绍</a></p>
</li>
</ul>
<h3 id="容灾演练流程">容灾演练流程</h3>
<ul>
<li><a href="https://mp.weixin.qq.com/s?__biz=MjM5MDE0Mjc4MA==&amp;mid=2650996320&amp;idx=1&amp;sn=0ed3be190bbee4a9277886ef88cbb2e5" target="_blank" rel="noopener noreffer">《依赖治理、灰度发布、故障演练，阿里电商故障演练系统的设计与实战经验》</a>
<ul>
<li>常见故障画像</li>
<li>案例：预案有效性、预案有效性、故障复现、架构容灾测试、参数调优、参数调优、故障突袭、联合演练。</li>
</ul>
</li>
</ul>
<h3 id="平滑启动">平滑启动</h3>
<ul>
<li>
<p>平滑重启应用思路
1.端流量（如vip层）、2. flush 数据(如果有)、3, 重启应用</p>
</li>
<li>
<p><a href="https://blog.csdn.net/u011001084/article/details/73480432" target="_blank" rel="noopener noreffer">《JVM安全退出（如何优雅的关闭java服务）》</a>
推荐推出方式：System.exit，Kill SIGTERM；不推荐 kill-9；用 Runtime.addShutdownHook 注册钩子。</p>
</li>
<li>
<p><a href="http://ju.outofmemory.cn/entry/337235" target="_blank" rel="noopener noreffer">《常见Java应用如何优雅关闭》</a>
Java、Spring、Dubbo 优雅关闭方式。</p>
</li>
</ul>
<h2 id="数据库扩展">数据库扩展</h2>
<h3 id="读写分离模式">读写分离模式</h3>
<ul>
<li>
<p><a href="https://www.cnblogs.com/houdj/p/6563771.html" target="_blank" rel="noopener noreffer">《Mysql主从方案的实现》</a></p>
</li>
<li>
<p><a href="https://www.cnblogs.com/edisonchou/p/4133148.html" target="_blank" rel="noopener noreffer">《搭建MySQL主从复制经典架构》</a></p>
</li>
<li>
<p><a href="https://blog.csdn.net/nimasike/article/details/48048341" target="_blank" rel="noopener noreffer">《Haproxy+多台MySQL从服务器(Slave) 实现负载均衡》</a></p>
</li>
<li>
<p><a href="https://www.cnblogs.com/zhangsubai/p/6801764.html" target="_blank" rel="noopener noreffer">《DRBD+Heartbeat+Mysql高可用读写分离架构》</a></p>
<ul>
<li>DRDB 进行磁盘复制，避免单点问题。</li>
</ul>
</li>
<li>
<p><a href="https://coderxing.gitbooks.io/architecture-evolution/di-san-pian-ff1a-bu-luo/62-ke-kuo-zhan-de-shu-ju-ku-jia-gou/621-gao-ke-yong-mysql-de-ji-zhong-fang-an/6214-mysql-cluster-fang-an.html" target="_blank" rel="noopener noreffer">《MySQL Cluster 方式》</a></p>
</li>
</ul>
<h3 id="分片模式">分片模式</h3>
<ul>
<li>
<p><a href="https://www.jianshu.com/p/32b3e91aa22c" target="_blank" rel="noopener noreffer">《分库分表需要考虑的问题及方案》</a></p>
<ul>
<li>中间件： 轻量级：sharding-jdbc、TSharding；重量级：Atlas、MyCAT、Vitess等。</li>
<li>问题：事务、Join、迁移、扩容、ID、分页等。</li>
<li>事务补偿：对数据进行对帐检查;基于日志进行比对;定期同标准数据来源进行同步等。</li>
<li>分库策略：数值范围；取模；日期等。</li>
<li>分库数量：通常 MySQL 单库 5千万条、Oracle 单库一亿条需要分库。</li>
</ul>
</li>
<li>
<p><a href="https://www.2cto.com/database/201503/380348.html" target="_blank" rel="noopener noreffer">《MySql分表和表分区详解》</a></p>
<ul>
<li>分区：是MySQL内部机制，对客户端透明，数据存储在不同文件中，表面上看是同一个表。</li>
<li>分表：物理上创建不同的表、客户端需要管理分表路由。</li>
</ul>
</li>
</ul>
<h2 id="服务治理">服务治理</h2>
<h3 id="服务注册与发现">服务注册与发现</h3>
<ul>
<li>
<p><a href="https://blog.csdn.net/jiaolongdy/article/details/51188798" target="_blank" rel="noopener noreffer">《永不失联！如何实现微服务架构中的服务发现？》</a></p>
<ul>
<li>客户端服务发现模式：客户端直接查询注册表，同时自己负责负载均衡。Eureka 采用这种方式。</li>
<li>服务器端服务发现模式：客户端通过负载均衡查询服务实例。</li>
</ul>
</li>
<li>
<p><a href="https://blog.csdn.net/u010963948/article/details/71730165" target="_blank" rel="noopener noreffer">《SpringCloud服务注册中心比较:Consul vs Zookeeper vs Etcd vs Eureka》</a></p>
<ul>
<li>CAP支持：Consul（CA）、zookeeper（cp）、etcd（cp） 、euerka（ap）</li>
<li>作者认为目前 Consul 对 Spring cloud 的支持比较好。</li>
</ul>
</li>
<li>
<p><a href="http://mobile.51cto.com/news-502394.htm" target="_blank" rel="noopener noreffer">《基于Zookeeper的服务注册与发现》</a></p>
<ul>
<li>优点：API简单、Pinterest，Airbnb 在用、多语言、通过watcher机制来实现配置PUSH，能快速响应配置变化。</li>
</ul>
</li>
</ul>
<h3 id="服务路由控制">服务路由控制</h3>
<ul>
<li><a href="https://blog.csdn.net/xundh/article/details/59492750" target="_blank" rel="noopener noreffer">《分布式服务框架学习笔记4 服务路由》</a>
<ul>
<li>原则：透明化路由</li>
<li>负载均衡策略：随机、轮询、服务调用延迟、一致性哈希、粘滞连接</li>
<li>本地路由优先策略：injvm(优先调用jvm内部的服务)，innative(优先使用相同物理机的服务),原则上找距离最近的服务。</li>
<li>配置方式：统一注册表；本地配置；动态下发。</li>
</ul>
</li>
</ul>
<h2 id="分布式一致">分布式一致</h2>
<h3 id="cap-与-base-理论">CAP 与 BASE 理论</h3>
<ul>
<li><a href="http://www.cnblogs.com/szlbm/p/5588543.html" target="_blank" rel="noopener noreffer">《从分布式一致性谈到CAP理论、BASE理论》</a>
<ul>
<li>一致性分类：强一致(立即一致)；弱一致(可在单位时间内实现一致，比如秒级)；最终一致(弱一致的一种，一定时间内最终一致)</li>
<li>CAP：一致性、可用性、分区容错性(网络故障引起)</li>
<li>BASE：Basically Available（基本可用）、Soft state（软状态）和Eventually consistent（最终一致性）</li>
<li>BASE理论的核心思想是：即使无法做到强一致性，但每个应用都可以根据自身业务特点，采用适当的方式来使系统达到最终一致性。</li>
</ul>
</li>
</ul>
<h3 id="分布式锁">分布式锁</h3>
<ul>
<li>
<p><a href="http://www.hollischuang.com/archives/1716" target="_blank" rel="noopener noreffer">《分布式锁的几种实现方式》</a></p>
<ul>
<li>基于数据库的分布式锁：优点：操作简单、容易理解。缺点：存在单点问题、数据库性能够开销较大、不可重入；</li>
<li>基于缓存的分布式锁：优点：非阻塞、性能好。缺点：操作不好容易造成锁无法释放的情况。</li>
<li>Zookeeper 分布式锁：通过有序临时节点实现锁机制，自己对应的节点需要最小，则被认为是获得了锁。优点：集群可以透明解决单点问题，避免锁不被释放问题，同时锁可以重入。缺点：性能不如缓存方式，吞吐量会随着zk集群规模变大而下降。</li>
</ul>
</li>
<li>
<p><a href="https://www.tuicool.com/articles/VZJr6fY" target="_blank" rel="noopener noreffer">《基于Zookeeper的分布式锁》</a></p>
<ul>
<li>清楚的原理描述 + Java 代码示例。</li>
</ul>
</li>
<li>
<p><a href="https://www.cnblogs.com/0201zcr/p/5942748.html" target="_blank" rel="noopener noreffer">《jedisLock—redis分布式锁实现》</a></p>
<ul>
<li>基于 setnx(set if ont exists)，有则返回false，否则返回true。并支持过期时间。</li>
</ul>
</li>
<li>
<p><a href="https://blog.csdn.net/albertfly/article/details/77412333" target="_blank" rel="noopener noreffer">《Memcached 和 Redis 分布式锁方案》</a></p>
<ul>
<li>利用 memcached 的 add（有别于set）操作，当key存在时，返回false。</li>
</ul>
</li>
</ul>
<h3 id="分布式一致性算法">分布式一致性算法</h3>
<h4 id="paxos">PAXOS</h4>
<ul>
<li><a href="https://www.cnblogs.com/linbingdong/p/6253479.html" target="_blank" rel="noopener noreffer">《分布式系列文章——Paxos算法原理与推导》</a></li>
<li><a href="https://blog.csdn.net/u010039929/article/details/70171672" target="_blank" rel="noopener noreffer">《Paxos&ndash;&gt;Fast Paxos&ndash;&gt;Zookeeper分析》</a></li>
<li><a href="https://www.cnblogs.com/leesf456/p/6012777.html" target="_blank" rel="noopener noreffer">《【分布式】Zookeeper与Paxos》</a></li>
</ul>
<h4 id="zab">Zab</h4>
<ul>
<li><a href="https://www.jianshu.com/p/fb527a64deee" target="_blank" rel="noopener noreffer">《Zab：Zookeeper 中的分布式一致性协议介绍》</a></li>
</ul>
<h4 id="raft">Raft</h4>
<ul>
<li><a href="http://www.cnblogs.com/mindwind/p/5231986.html" target="_blank" rel="noopener noreffer">《Raft 为什么是更易理解的分布式一致性算法》</a>
<ul>
<li>三种角色：Leader（领袖）、Follower（群众）、Candidate（候选人）</li>
<li>通过随机等待的方式发出投票，得票多的获胜。</li>
</ul>
</li>
</ul>
<h4 id="gossip">Gossip</h4>
<ul>
<li><a href="http://blog.51cto.com/tianya23/530743" target="_blank" rel="noopener noreffer">《Gossip算法》</a></li>
</ul>
<h4 id="两阶段提交多阶段提交">两阶段提交、多阶段提交</h4>
<ul>
<li><a href="http://blog.jobbole.com/95632/" target="_blank" rel="noopener noreffer">《关于分布式事务、两阶段提交协议、三阶提交协议》</a></li>
</ul>
<h3 id="幂等">幂等</h3>
<ul>
<li><a href="https://www.cnblogs.com/wxgblogs/p/6639272.html" target="_blank" rel="noopener noreffer">《分布式系统&mdash;幂等性设计》</a>
<ul>
<li>幂等特性的作用：该资源具备幂等性，请求方无需担心重复调用会产生错误。</li>
<li>常见保证幂等的手段：MVCC（类似于乐观锁）、去重表(唯一索引)、悲观锁、一次性token、序列号方式。</li>
</ul>
</li>
</ul>
<h3 id="分布式一致方案">分布式一致方案</h3>
<ul>
<li><a href="http://www.infoq.com/cn/articles/solution-of-distributed-system-transaction-consistency" target="_blank" rel="noopener noreffer">《分布式系统事务一致性解决方案》</a></li>
<li><a href="https://weibo.com/ttarticle/p/show?id=2309403965965003062676" target="_blank" rel="noopener noreffer">《保证分布式系统数据一致性的6种方案》</a></li>
</ul>
<h3 id="分布式-leader-节点选举">分布式 Leader 节点选举</h3>
<ul>
<li><a href="https://blog.csdn.net/johnson_moon/article/details/78809995" target="_blank" rel="noopener noreffer">《利用zookeeper实现分布式leader节点选举》</a></li>
</ul>
<h3 id="tcctryconfirmcancel-柔性事务">TCC(Try/Confirm/Cancel) 柔性事务</h3>
<ul>
<li><a href="https://www.jianshu.com/p/ab1a1c6b08a1" target="_blank" rel="noopener noreffer">《传统事务与柔性事务》</a>
<ul>
<li>基于BASE理论：基本可用、柔性状态、最终一致。</li>
<li>解决方案：记录日志+补偿（正向补充或者回滚）、消息重试(要求程序要幂等)；“无锁设计”、采用乐观锁机制。</li>
</ul>
</li>
</ul>
<h2 id="分布式文件系统">分布式文件系统</h2>
<ul>
<li><a href="https://zhuanlan.zhihu.com/p/27666295" target="_blank" rel="noopener noreffer">说说分布式文件存储系统-基本架构</a> ？</li>
<li><a href="https://blog.csdn.net/gatieme/article/details/44982961" target="_blank" rel="noopener noreffer">《各种分布式文件系统的比较》</a> ？
<ul>
<li>HDFS：大批量数据读写，用于高吞吐量的场景，不适合小文件。</li>
<li>FastDFS：轻量级、适合小文件。</li>
</ul>
</li>
</ul>
<h2 id="唯一id-生成">唯一ID 生成</h2>
<h3 id="全局唯一id">全局唯一ID</h3>
<ul>
<li>
<p><a href="https://www.cnblogs.com/baiwa/p/5318432.html" target="_blank" rel="noopener noreffer">《高并发分布式系统中生成全局唯一Id汇总》</a></p>
<ul>
<li>Twitter 方案（Snowflake 算法）：41位时间戳+10位机器标识（比如IP，服务器名称等）+12位序列号(本地计数器)</li>
<li>Flicker 方案：MySQL自增ID + &ldquo;REPLACE INTO XXX:SELECT LAST_INSERT_ID();&rdquo;</li>
<li>UUID：缺点，无序，字符串过长，占用空间，影响检索性能。</li>
<li>MongoDB 方案：利用 ObjectId。缺点：不能自增。</li>
</ul>
</li>
<li>
<p><a href="https://blog.csdn.net/hdu09075340/article/details/79103851" target="_blank" rel="noopener noreffer">《TDDL 在分布式下的SEQUENCE原理》</a></p>
<ul>
<li>在数据库中创建 sequence 表，用于记录，当前已被占用的id最大值。</li>
<li>每台客户端主机取一个id区间（比如 1000~2000）缓存在本地，并更新 sequence 表中的id最大值记录。</li>
<li>客户端主机之间取不同的id区间，用完再取，使用乐观锁机制控制并发。</li>
</ul>
</li>
</ul>
<h2 id="一致性hash算法">一致性Hash算法</h2>
<ul>
<li><a href="https://coderxing.gitbooks.io/architecture-evolution/di-san-pian-ff1a-bu-luo/631-yi-zhi-xing-ha-xi.html" target="_blank" rel="noopener noreffer">《一致性哈希算法》</a></li>
</ul>
<h1 id="设计思想--开发模式">设计思想 &amp; 开发模式</h1>
<h2 id="ddddomain-driven-design---领域驱动设计">DDD(Domain-driven Design - 领域驱动设计)</h2>
<ul>
<li>
<p><a href="https://www.cnblogs.com/netfocus/p/5548025.html" target="_blank" rel="noopener noreffer">《浅谈我对DDD领域驱动设计的理解》</a></p>
<ul>
<li>概念：DDD 主要对传统软件开发流程(分析-设计-编码)中各阶段的割裂问题而提出，避免由于一开始分析不明或在软件开发过程中的信息流转不一致而造成软件无法交付（和需求方设想不一致）的问题。DDD 强调一切以领域（Domain）为中心，强调领域专家（Domain Expert）的作用，强调先定义好领域模型之后在进行开发，并且领域模型可以指导开发（所谓的驱动）。</li>
<li>过程：理解领域、拆分领域、细化领域，模型的准确性取决于模型的理解深度。</li>
<li>设计：DDD 中提出了建模工具，比如聚合、实体、值对象、工厂、仓储、领域服务、领域事件来帮助领域建模。</li>
</ul>
</li>
<li>
<p><a href="https://www.cnblogs.com/butterfly100/p/7827870.html" target="_blank" rel="noopener noreffer">《领域驱动设计的基础知识总结》</a></p>
<ul>
<li>领域（Doamin）本质上就是问题域，比如一个电商系统，一个论坛系统等。</li>
<li>界限上下文（Bounded Context）：阐述子域之间的关系，可以简单理解成一个子系统或组件模块。</li>
<li>领域模型（Domain Model）：DDD的核心是建立（用通用描述语言、工具—领域通用语言）正确的领域模型；反应业务需求的本质，包括实体和过程；其贯穿软件分析、设计、开发 的整个过程；常用表达领域模型的方式：图、代码或文字；</li>
<li>领域通用语言：领域专家、开发设计人员都能立即的语言或工具。</li>
<li>经典分层架构：用户界面/展示层、应用层、领域层、基础设施层，是四层架构模式。</li>
<li>使用的模式：
<ul>
<li>关联尽量少，尽量单项，尽量降低整体复杂度。</li>
<li>实体（Entity）：领域中的唯一标示，一个实体的属性尽量少，少则清晰。</li>
<li>值对象（Value Object）：没有唯一标识，且属性值不可变，小二简单的对象，比如Date。</li>
<li>领域服务（Domain Service）： 协调多个领域对象，只有方法没有状态(不存数据)；可以分为应用层服务，领域层服务、基础层服务。</li>
<li>聚合及聚合根（Aggregate，Aggregate Root）：聚合定义了一组具有内聚关系的相关对象的集合；聚合根是对聚合引用的唯一元素；当修改一个聚合时，必须在事务级别；大部分领域模型中，有70%的聚合通常只有一个实体，30%只有2~3个实体；如果一个聚合只有一个实体，那么这个实体就是聚合根；如果有多个实体，那么我们可以思考聚合内哪个对象有独立存在的意义并且可以和外部直接进行交互；</li>
<li>工厂（Factory）：类似于设计模式中的工厂模式。</li>
<li>仓储（Repository）：持久化到DB，管理对象，且只对聚合设计仓储。</li>
</ul>
</li>
</ul>
</li>
<li>
<p><a href="http://www.cnblogs.com/Leo_wl/p/3866629.html" target="_blank" rel="noopener noreffer">《领域驱动设计(DDD)实现之路》</a></p>
<ul>
<li>聚合：比如一辆汽车（Car）包含了引擎（Engine）、车轮（Wheel）和油箱（Tank）等组件，缺一不可。</li>
</ul>
</li>
<li>
<p><a href="http://www.hollischuang.com/archives/553" target="_blank" rel="noopener noreffer">《领域驱动设计系列（2）浅析VO、DTO、DO、PO的概念、区别和用处》</a></p>
</li>
</ul>
<h3 id="命令查询职责分离cqrs">命令查询职责分离(CQRS)</h3>
<p>CQRS — Command Query Responsibility Seperation</p>
<ul>
<li>
<p><a href="https://www.cnblogs.com/cnblogsfans/p/4551990.html" target="_blank" rel="noopener noreffer">《领域驱动设计系列 (六)：CQRS》</a></p>
<ul>
<li>核心思想：读写分离（查询和更新在不同的方法中），不同的流程只是不同的设计方式，CQ代码分离，分布式环境中会有明显体现（有冗余数据的情况下），目的是为了高性能。</li>
</ul>
</li>
<li>
<p><a href="http://www.techweb.com.cn/network/system/2017-07-07/2553563.shtml" target="_blank" rel="noopener noreffer">《DDD CQRS架构和传统架构的优缺点比较》</a></p>
<ul>
<li>最终一致的设计理念；依赖于高可用消息中间件。</li>
</ul>
</li>
<li>
<p><a href="http://www.cnblogs.com/netfocus/p/4055346.html" target="_blank" rel="noopener noreffer">《CQRS架构简介》</a></p>
<ul>
<li>一个实现 CQRS 的抽象案例。</li>
</ul>
</li>
<li>
<p><a href="http://www.uml.org.cn/zjjs/201609221.asp" target="_blank" rel="noopener noreffer">《深度长文：我对CQRS/EventSourcing架构的思考》</a></p>
<ul>
<li>CQRS 模式分析 + 12306 抢票案例</li>
</ul>
</li>
</ul>
<h3 id="贫血充血模型">贫血，充血模型</h3>
<ul>
<li><a href="https://kb.cnblogs.com/page/520743/" target="_blank" rel="noopener noreffer">《贫血，充血模型的解释以及一些经验》</a>
<ul>
<li>失血模型：老子和儿子分别定义，相互不知道，二者实体定义中完全没有业务逻辑，通过外部Service进行关联。</li>
<li>贫血模型：老子知道儿子，儿子也知道老子；部分业务逻辑放到实体中；优点：各层单项依赖，结构清楚，易于维护；缺点：不符合OO思想，相比于充血模式，Service层较为厚重；</li>
<li>充血模型：和贫血模型类似，区别在于如何划分业务逻辑。优点：Service层比较薄，只充当Facade的角色，不和DAO打交道、复合OO思想；缺点：非单项依赖，DO和DAO之间双向依赖、和Service层的逻辑划分容易造成混乱。</li>
<li>肿胀模式：是一种极端情况，取消Service层、全部业务逻辑放在DO中；优点：符合OO思想、简化了分层；缺点：暴露信息过多、很多非DO逻辑也会强行并入DO。这种模式应该避免。</li>
<li>作者主张使用贫血模式。</li>
</ul>
</li>
</ul>
<h2 id="actor-模式">Actor 模式</h2>
<p>TODO</p>
<h2 id="响应式编程">响应式编程</h2>
<h3 id="reactor">Reactor</h3>
<p>TODO</p>
<h3 id="rxjava">RxJava</h3>
<p>TODO</p>
<h3 id="vertx">Vert.x</h3>
<p>TODO</p>
<h2 id="dodaf20">DODAF2.0</h2>
<ul>
<li><a href="http://www.360doc.com/content/16/0627/19/33945750_571201779.shtml" target="_blank" rel="noopener noreffer">《DODAF2.0方法论》</a></li>
<li><a href="http://blog.51cto.com/xiaoyong/1553164" target="_blank" rel="noopener noreffer">《DODAF2.0之能力视角如何落地》</a></li>
</ul>
<h2 id="serverless">Serverless</h2>
<p>无需过多关系服务器的服务架构理念。</p>
<ul>
<li>
<p><a href="http://www.jdon.com/soa/serverless.html" target="_blank" rel="noopener noreffer">《什么是Serverless无服务器架构？》</a></p>
<ul>
<li>Serverless 不代表出去服务器，而是去除对服务器运行状态的关心。</li>
<li>Serverless 代表一思维方式的转变，从“构建一套服务在一台服务器上，对对个事件进行响应转变为构建一个为服务器，来响应一个事件”。</li>
<li>Serverless 不代表某个具体的框架。</li>
</ul>
</li>
<li>
<p><a href="http://www.infoq.com/cn/news/2017/10/how-to-understand-serverless" target="_blank" rel="noopener noreffer">《如何理解Serverless？》</a></p>
<ul>
<li>依赖于 Baas （(Mobile) Backend as a Service） 和 Faas （Functions as a service）</li>
</ul>
</li>
</ul>
<h2 id="service-mesh">Service Mesh</h2>
<ul>
<li><a href="https://time.geekbang.org/article/2355" target="_blank" rel="noopener noreffer">《什么是Service Mesh？》</a></li>
<li><a href="https://www.jianshu.com/p/e23e3e74538e" target="_blank" rel="noopener noreffer">《初识 Service Mesh》</a></li>
</ul>
<h1 id="项目管理">项目管理</h1>
<h2 id="架构评审">架构评审</h2>
<ul>
<li><a href="http://developer.51cto.com/art/201506/478486.htm" target="_blank" rel="noopener noreffer">《架构设计之如何评审架构设计说明书》</a></li>
<li><a href="https://blog.csdn.net/wireless_com/article/details/45935591" target="_blank" rel="noopener noreffer">《人人都是架构师：非功能性需求》</a></li>
</ul>
<h2 id="重构">重构</h2>
<ul>
<li><a href="http://www.infoq.com/cn/articles/architect-12-rules-complete/" target="_blank" rel="noopener noreffer">《架构之重构的12条军规》</a></li>
</ul>
<h2 id="代码规范">代码规范</h2>
<ul>
<li><a href="https://github.com/alibaba/p3c" target="_blank" rel="noopener noreffer">《阿里巴巴Java开发手册》</a></li>
</ul>
<h2 id="代码-review">代码 Review</h2>
<p>制度还是制度!
另外，每个公司需要根据自己的需求和目标制定自己的 check list</p>
<ul>
<li>
<p><a href="http://www.sohu.com/a/229745352_181657" target="_blank" rel="noopener noreffer">《为什么你做不好 Code Review？》</a></p>
<ul>
<li>代码 review 做的好，在于制度建设。</li>
</ul>
</li>
<li>
<p><a href="https://blog.csdn.net/uxyheaven/article/details/49773619" target="_blank" rel="noopener noreffer">《从零开始Code Review》</a></p>
</li>
<li>
<p><a href="https://www.cnblogs.com/zuoping/p/5477047.html" target="_blank" rel="noopener noreffer">《Code Review Checklist》</a></p>
</li>
<li>
<p><a href="https://dzone.com/articles/java-code-review-checklist" target="_blank" rel="noopener noreffer">《Java Code Review Checklist》</a></p>
</li>
<li>
<p><a href="https://blog.csdn.net/legend0011/article/details/45585575" target="_blank" rel="noopener noreffer">《如何用 gitlab 做 code review》</a></p>
</li>
</ul>
<h2 id="rup">RUP</h2>
<ul>
<li><a href="https://blog.csdn.net/apanious/article/details/51011946" target="_blank" rel="noopener noreffer">《运用RUP 4+1视图方法进行软件架构设计》</a></li>
</ul>
<h2 id="看板管理">看板管理</h2>
<ul>
<li><a href="https://blog.csdn.net/tkchen/article/details/51637643" target="_blank" rel="noopener noreffer">《说说看板在项目中的应用》</a></li>
</ul>
<h2 id="scrum">SCRUM</h2>
<p>SCRUM - 争球</p>
<ul>
<li>
<p>3个角色:Product Owner(PO) 产品负责人;Scrum Master（SM），推动Scrum执行;Team 开发团队。</p>
</li>
<li>
<p>3个工件：Product Backlog 产品TODOLIST，含优先级;Sprint Backlog 功能开发 TODO LIST；燃尽图；</p>
</li>
<li>
<p>五个价值观：专注、勇气、公开、承诺、尊重。</p>
</li>
<li>
<p><a href="https://blog.csdn.net/inny100_100/article/details/54633757" target="_blank" rel="noopener noreffer">《敏捷项目管理流程-Scrum框架最全总结！》</a></p>
</li>
<li>
<p><a href="https://blog.csdn.net/superkunkun/article/details/52951142" target="_blank" rel="noopener noreffer">《敏捷其实很简单3&mdash;敏捷方法之scrum》</a></p>
</li>
</ul>
<h2 id="敏捷开发">敏捷开发</h2>
<p>TODO</p>
<h2 id="极限编程xp">极限编程（XP）</h2>
<p>XP - eXtreme Programming</p>
<ul>
<li><a href="http://www.woshipm.com/pmd/406917.html" target="_blank" rel="noopener noreffer">《主流敏捷开发方法：极限编程XP》</a>
<ul>
<li>
<p>是一种指导开发人员的方法论。</p>
</li>
<li>
<p>4大价值：</p>
<ul>
<li>沟通：鼓励口头沟通，提高效率。</li>
<li>简单：够用就好。</li>
<li>反馈：及时反馈、通知相关人。</li>
<li>勇气：提倡拥抱变化，敢于重构。</li>
</ul>
</li>
<li>
<p>5个原则：快速反馈、简单性假设、逐步修改、提倡更改（小步快跑）、优质工作（保证质量的前提下保证小步快跑）。</p>
</li>
<li>
<p>5个工作：阶段性冲刺；冲刺计划会议；每日站立会议；冲刺后review；回顾会议。</p>
</li>
</ul>
</li>
</ul>
<h2 id="结对编程">结对编程</h2>
<p>边写码，边review。能够增强代码质量、减少bug。</p>
<ul>
<li><a href="http://www.baike.com/wiki/%E7%BB%93%E5%AF%B9%E7%BC%96%E7%A8%8B" target="_blank" rel="noopener noreffer">《结对编程》</a></li>
</ul>
<h2 id="pdca-循环质量管理">PDCA 循环质量管理</h2>
<p>P——PLAN 策划，D——DO 实施，C——CHECK 检查，A——ACT 改进</p>
<ul>
<li><a href="http://www.baike.com/wiki/PDCA" target="_blank" rel="noopener noreffer">《PDCA》</a></li>
</ul>
<h2 id="fmea管理模式">FMEA管理模式</h2>
<p>TODO</p>
<h1 id="通用业务术语">通用业务术语</h1>
<p>TODO</p>
<h1 id="技术趋势">技术趋势</h1>
<p>TODO</p>
<h1 id="政策法规">政策、法规</h1>
<h2 id="法律">法律</h2>
<ul>
<li>
<p><a href="https://baike.baidu.com/item/%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8%E6%B3%95/16843044" target="_blank" rel="noopener noreffer">《中华人民共和国网络安全法》</a></p>
<ul>
<li>2016年11月7日发布，自2017年6月1日起施行</li>
</ul>
</li>
<li>
<p><a href="https://baike.baidu.com/item/%e4%b8%aa%e4%ba%ba%e4%bf%a1%e6%81%af%e4%bf%9d%e6%8a%a4%e6%b3%95/8343360" target="_blank" rel="noopener noreffer">《个人信息保护法》</a></p>
<ul>
<li>个人信息保护法是一部保护个人信息的法律条款，现尚在制订中，2019全国两会信息安全相关提案中，有政协委员呼吁关注大数据时代隐私保护，加速立法。</li>
</ul>
</li>
<li>
<p><a href="https://baike.baidu.com/item/%e6%9c%80%e9%ab%98%e4%ba%ba%e6%b0%91%e6%b3%95%e9%99%a2%e3%80%81%e6%9c%80%e9%ab%98%e4%ba%ba%e6%b0%91%e6%a3%80%e5%af%9f%e9%99%a2%e5%85%b3%e4%ba%8e%e5%8a%9e%e7%90%86%e4%be%b5%e7%8a%af%e5%85%ac%e6%b0%91%e4%b8%aa%e4%ba%ba%e4%bf%a1%e6%81%af%e5%88%91%e4%ba%8b%e6%a1%88%e4%bb%b6%e9%80%82%e7%94%a8%e6%b3%95%e5%be%8b%e8%8b%a5%e5%b9%b2%e9%97%ae%e9%a2%98%e7%9a%84%e8%a7%a3%e9%87%8a/20497481" target="_blank" rel="noopener noreffer">《最高人民法院、最高人民检察院关于办理侵犯公民个人信息刑事案件适用法律若干问题的解释》</a></p>
<ul>
<li>《解释》共十三条，自2017年6月1日起施行</li>
</ul>
<blockquote>
<ul>
<li>1、对于行踪轨迹信息、通信内容、征信信息、财产信息，非法获取、出售或者提供50条以上即算“情节严重”；</li>
<li>2、对于住宿信息、通信记录、健康生理信息、交易信息等其他可能影响人身、财产安全的公民个人信息，标准则是 500条以上；</li>
<li>3、对于其他公民个人信息，标准为 5000条以上。</li>
</ul>
</blockquote>
</li>
<li>
<p><a href="https://baike.baidu.com/item/%e4%b8%ad%e5%8d%8e%e4%ba%ba%e6%b0%91%e5%85%b1%e5%92%8c%e5%9b%bd%e7%94%b5%e5%ad%90%e5%95%86%e5%8a%a1%e6%b3%95/16467544" target="_blank" rel="noopener noreffer">《中华人民共和国电子商务法》</a></p>
<ul>
<li>2018年8月31日，十三届全国人大常委会第五次会议表决通过《电子商务法》，自2019年1月1日起施行</li>
<li><a href="https://v.youku.com/v_show/id_XNDAzNjAyNDM0MA==.html" target="_blank" rel="noopener noreffer">解读电子商务法（一）什么是电商</a></li>
<li><a href="https://v.youku.com/v_show/id_XNDA1OTc0OTQ5Mg==.html" target="_blank" rel="noopener noreffer">解读电子商务法（二）电商经营者</a></li>
<li><a href="https://v.youku.com/v_show/id_XNDA4NzIyNjI4MA==.html" target="_blank" rel="noopener noreffer">解读电子商务法（三）电商行为规范</a></li>
<li><a href="https://v.qq.com/x/page/e08443fc1cr.html" target="_blank" rel="noopener noreffer">解读电子商务法（四）电商的法律关系</a></li>
<li><a href="https://v.youku.com/v_show/id_XNDA4MTQ2Nzk4NA==.html" target="_blank" rel="noopener noreffer">解读电子商务法（外传）电商挣钱的秘密</a></li>
<li><a href="https://v.qq.com/x/page/j0844twjwr5.html" target="_blank" rel="noopener noreffer">解读电子商务法（外传）电商模式</a></li>
</ul>
</li>
<li>
<p><a href="https://blog.csdn.net/a331685690/article/details/79917772" target="_blank" rel="noopener noreffer">程序员需要知道的法律常识</a></p>
</li>
<li>
<p><a href="https://time.geekbang.org/column/132" target="_blank" rel="noopener noreffer">白话法律42讲-为程序员打造的专属法律武器</a></p>
</li>
</ul>
<h3 id="严格遵守刑法253法条">严格遵守刑法253法条</h3>
<p>我国刑法第253条之一规定：</p>
<blockquote>
<ul>
<li>国家机关或者金融、电信、交通、教育、医疗等单位的工作人员，违反国家规定，将本单位在履行职责或者提供服务过程中获得的公民个人信息，出售或者非法提供给他人，情节严重的，处3年以下有期徒刑或者拘役，并处或者单处罚金。</li>
<li>窃取或者以其他方法非法获取上述信息，情节严重的，依照前款的规定处罚。</li>
<li>单位犯前两款罪的，对单位判处罚金，并对其直接负责的主管人员和其他直接责任人员，依照各该款的规定处罚。</li>
</ul>
</blockquote>
<p>最高人民法院、最高人民检察院关于执行《中华人民共和国刑法》确定罪名的补充规定（四）规定：触犯刑法第253条之一第1款之规定，构成“出售、非法提供公民个人信息罪”；触犯刑法第253条之一第2款之规定，构成“非法获取公民个人信息罪”</p>
<ul>
<li><a href="https://baike.baidu.com/item/%E9%9D%9E%E6%B3%95%E8%8E%B7%E5%8F%96%E5%85%AC%E6%B0%91%E4%B8%AA%E4%BA%BA%E4%BF%A1%E6%81%AF%E7%BD%AA" target="_blank" rel="noopener noreffer">《非法获取公民个人信息罪》</a></li>
</ul>
<h3 id="避风港原则">避风港原则</h3>
<p>“避风港”原则是指在发生著作权侵权案件时，当ISP（网络服务提供商）只提供空间服务，并不制作网页内容，如果ISP被告知侵权，则有删除的义务，否则就被视为侵权。如果侵权内容既不在ISP的服务器上存储，又没有被告知哪些内容应该删除，则ISP不承担侵权责任。 后来避风港原则也被应用在搜索引擎、网络存储、在线图书馆等方面。</p>
<ul>
<li><a href="https://baike.baidu.com/item/%E9%81%BF%E9%A3%8E%E6%B8%AF%E5%8E%9F%E5%88%99/588459?fr=aladdin" target="_blank" rel="noopener noreffer">《避风港原则》</a></li>
</ul>
<h1 id="架构师素质">架构师素质</h1>
<ul>
<li>
<p><a href="http://hellojava.info/?p=430" target="_blank" rel="noopener noreffer">《架构师画像》</a></p>
<ul>
<li>业务理解和抽象能力</li>
<li>NB的代码能力</li>
<li>全面：1. 在面对业务问题上，架构师脑海里是否会浮现出多种技术方案；2. 在做系统设计时是否考虑到了足够多的方方面面；3. 在做系统设计时是否考虑到了足够多的方方面面；</li>
<li>全局：是否考虑到了对上下游的系统的影响。</li>
<li>权衡：权衡投入产出比；优先级和节奏控制；</li>
</ul>
</li>
<li>
<p><a href="http://www.infoq.com/cn/articles/architecture-optimization-and-design-the-architect-must-know" target="_blank" rel="noopener noreffer">《关于架构优化和设计，架构师必须知道的事情》</a></p>
<ul>
<li>要去考虑的细节：模块化、轻耦合、无共享架构；减少各个组件之前的依赖、注意服务之间依赖所有造成的链式失败及影响等。</li>
<li>基础设施、配置、测试、开发、运维综合考虑。</li>
<li>考虑人、团队、和组织的影响。</li>
</ul>
</li>
<li>
<p><a href="https://www.zhihu.com/question/19841397" target="_blank" rel="noopener noreffer">《如何才能真正的提高自己，成为一名出色的架构师？》</a></p>
</li>
<li>
<p><a href="https://blog.csdn.net/sanbingyutuoniao123/article/details/54144129" target="_blank" rel="noopener noreffer">《架构师的必备素质和成长途径》</a></p>
<ul>
<li>素质：业务理解、技术广度、技术深度、丰富经验、沟通能力、动手能力、美学素养。</li>
<li>成长路径：2年积累知识、4年积累技能和组内影响力、7年积累部门内影响力、7年以上积累跨部门影响力。</li>
</ul>
</li>
<li>
<p><a href="http://blog.51cto.com/frankfan/1248401" target="_blank" rel="noopener noreffer">《架构设计师—你在哪层楼？》</a></p>
<ul>
<li>第一层的架构师看到的只是产品本身</li>
<li>第二层的架构师不仅看到自己的产品，还看到了整体的方案</li>
<li>第三层的架构师看到的是商业价值</li>
</ul>
</li>
</ul>
<h1 id="团队管理">团队管理</h1>
<p>TODO</p>
<h2 id="招聘">招聘</h2>
<h1 id="资讯">资讯</h1>
<h2 id="行业资讯">行业资讯</h2>
<ul>
<li><a href="http://36kr.com/" target="_blank" rel="noopener noreffer">36kr</a></li>
<li><a href="http://www.techweb.com.cn/" target="_blank" rel="noopener noreffer">Techweb</a></li>
</ul>
<h2 id="公众号列表">公众号列表</h2>
<p>TODO</p>
<h2 id="博客">博客</h2>
<h3 id="团队博客">团队博客</h3>
<ul>
<li><a href="http://jm.taobao.org/" target="_blank" rel="noopener noreffer">阿里中间件博客</a></li>
<li><a href="https://tech.meituan.com" target="_blank" rel="noopener noreffer">美团点评技术团队博客</a></li>
</ul>
<h3 id="个人博客">个人博客</h3>
<ul>
<li><a href="http://www.ruanyifeng.com/" target="_blank" rel="noopener noreffer">阮一峰的网络日志</a></li>
<li><a href="https://coolshell.cn/" target="_blank" rel="noopener noreffer">酷壳 - COOLSHELL-陈皓</a></li>
<li><a href="http://hellojava.info/" target="_blank" rel="noopener noreffer">hellojava-阿里毕玄</a></li>
<li><a href="http://cmsblogs.com/" target="_blank" rel="noopener noreffer">Cm&rsquo;s Blog</a></li>
<li><a href="http://blog.didispace.com/" target="_blank" rel="noopener noreffer">程序猿DD-翟永超-《Spring Cloud微服务实战》作者</a></li>
</ul>
<h2 id="综合门户社区">综合门户、社区</h2>
<p><strong>国内：</strong></p>
<ul>
<li>
<p><a href="http://csdn.net" target="_blank" rel="noopener noreffer">CSDN</a>
老牌技术社区、不必解释。</p>
</li>
<li>
<p><a href="http://www.51cto.com/" target="_blank" rel="noopener noreffer">51cto.com</a></p>
</li>
<li>
<p><a href="http://www.iteye.com/" target="_blank" rel="noopener noreffer">ITeye</a></p>
<ul>
<li>偏 Java 方向</li>
</ul>
</li>
<li>
<p><a href="https://www.cnblogs.com" target="_blank" rel="noopener noreffer">博客园</a></p>
</li>
<li>
<p><a href="http://www.chinaunix.net/" target="_blank" rel="noopener noreffer">ChinaUnix</a></p>
<ul>
<li>偏 Linux 方向</li>
</ul>
</li>
<li>
<p><a href="https://www.oschina.net/" target="_blank" rel="noopener noreffer">开源中国社区</a></p>
</li>
<li>
<p><a href="https://www.infoq.cn/" target="_blank" rel="noopener noreffer">InfoQ</a></p>
</li>
<li>
<p><a href="http://www.open-open.com/" target="_blank" rel="noopener noreffer">深度开源</a></p>
</li>
<li>
<p><a href="http://www.jobbole.com/" target="_blank" rel="noopener noreffer">伯乐在线</a></p>
<ul>
<li>涵盖 IT职场、Web前端、后端、移动端、数据库等方面内容，偏技术端。</li>
</ul>
</li>
<li>
<p><a href="http://www.itpub.net/" target="_blank" rel="noopener noreffer">ITPUB</a></p>
</li>
<li>
<p><a href="https://cloud.tencent.com/developer/column" target="_blank" rel="noopener noreffer">腾讯云— 云+社区</a></p>
</li>
<li>
<p><a href="https://yq.aliyun.com/" target="_blank" rel="noopener noreffer">阿里云— 云栖社区</a></p>
</li>
<li>
<p><a href="https://www.ibm.com/developerworks/cn/" target="_blank" rel="noopener noreffer">IBM DeveloperWorks</a></p>
</li>
<li>
<p><a href="https://toutiao.io/" target="_blank" rel="noopener noreffer">开发者头条</a></p>
</li>
<li>
<p><a href="http://www.linkedkeeper.com" target="_blank" rel="noopener noreffer">LinkedKeeper</a></p>
</li>
</ul>
<p><strong>国外：</strong></p>
<ul>
<li><a href="https://dzone.com" target="_blank" rel="noopener noreffer">DZone</a></li>
<li><a href="https://www.reddit.com" target="_blank" rel="noopener noreffer">Reddit</a></li>
</ul>
<h2 id="问答讨论类社区">问答、讨论类社区</h2>
<ul>
<li><a href="https://segmentfault.com" target="_blank" rel="noopener noreffer">segmentfault</a>
<ul>
<li>问答+专栏</li>
</ul>
</li>
<li><a href="https://www.zhihu.com/" target="_blank" rel="noopener noreffer">知乎</a></li>
<li><a href="https://stackoverflow.com/" target="_blank" rel="noopener noreffer">stackoverflow</a></li>
</ul>
<h2 id="行业数据分析">行业数据分析</h2>
<ul>
<li>
<p><a href="http://report.iresearch.cn/" target="_blank" rel="noopener noreffer">艾瑞网</a></p>
</li>
<li>
<p><a href="https://www.questmobile.com.cn" target="_blank" rel="noopener noreffer">QUEST MOBILE</a></p>
</li>
<li>
<p><a href="http://data.stats.gov.cn/" target="_blank" rel="noopener noreffer">国家数据</a></p>
</li>
<li>
<p><a href="http://www.talkingdata.com/" target="_blank" rel="noopener noreffer">TalkingData</a></p>
</li>
</ul>
<h2 id="专项网站">专项网站</h2>
<ul>
<li>
<p>测试:</p>
<ul>
<li><a href="http://www.ltesting.net/" target="_blank" rel="noopener noreffer">领测国际</a></li>
<li><a href="https://www.testwo.com/" target="_blank" rel="noopener noreffer">测试窝</a></li>
<li><a href="https://testerhome.com" target="_blank" rel="noopener noreffer">TesterHome</a></li>
</ul>
</li>
<li>
<p>运维:</p>
<ul>
<li><a href="http://www.yunweipai.com/" target="_blank" rel="noopener noreffer">运维派</a></li>
<li><a href="https://www.abcdocker.com/" target="_blank" rel="noopener noreffer">Abcdocker</a></li>
</ul>
</li>
<li>
<p>Java:</p>
<ul>
<li><a href="http://www.importnew.com/" target="_blank" rel="noopener noreffer">ImportNew</a>
<ul>
<li>专注于 Java 技术分享</li>
</ul>
</li>
<li><a href="https://howtodoinjava.com/" target="_blank" rel="noopener noreffer">HowToDoInJava</a>
<ul>
<li>英文博客</li>
</ul>
</li>
</ul>
</li>
<li>
<p>安全</p>
<ul>
<li><a href="https://www.2cto.com/" target="_blank" rel="noopener noreffer">红黑联盟</a></li>
<li><a href="http://www.freebuf.com/" target="_blank" rel="noopener noreffer">FreeBuf</a></li>
</ul>
</li>
<li>
<p>大数据</p>
<ul>
<li><a href="http://www.thebigdata.cn/" target="_blank" rel="noopener noreffer">中国大数据</a></li>
</ul>
</li>
<li>
<p>其他专题网站：</p>
<ul>
<li><a href="http://www.infoq.com/cn/" target="_blank" rel="noopener noreffer">InfoQ</a>
<ul>
<li>偏重于基础架构、运维方向</li>
</ul>
</li>
<li><a href="http://www.dockerinfo.net/" target="_blank" rel="noopener noreffer">DockerInfo</a>
<ul>
<li>专注于 Docker 应用及咨询、教程的网站</li>
</ul>
</li>
<li><a href="https://www.linuxidc.com/" target="_blank" rel="noopener noreffer">Linux公社</a>
<ul>
<li>Linux 主题社区</li>
</ul>
</li>
</ul>
</li>
</ul>
<h2 id="其他类">其他类</h2>
<ul>
<li><a href="https://github.com/TeamStuQ/skill-map" target="_blank" rel="noopener noreffer">程序员技能图谱</a></li>
</ul>
<h2 id="推荐参考书">推荐参考书</h2>
<h3 id="在线电子书">在线电子书</h3>
<ul>
<li>
<p><a href="https://github.com/forezp/SpringCloudLearning" target="_blank" rel="noopener noreffer">《深入理解Spring Cloud与微服务构建》</a></p>
</li>
<li>
<p><a href="http://techforum-img.cn-hangzhou.oss-pub.aliyun-inc.com/1523849261680/AliTech101_RD.pdf" target="_blank" rel="noopener noreffer">《阿里技术参考图册-研发篇》</a></p>
</li>
<li>
<p><a href="http://techforum-img.cn-hangzhou.oss-pub.aliyun-inc.com/1523848064814/AliTech101_Algorithms.pdf" target="_blank" rel="noopener noreffer">《阿里技术参考图册-算法篇》</a></p>
</li>
<li>
<p><a href="http://dpurl.cn/n/1lqcX" target="_blank" rel="noopener noreffer">《2018美团点评技术年货（合辑）》70M</a></p>
</li>
<li>
<p><a href="http://www.infoq.com/cn/architect/" target="_blank" rel="noopener noreffer">InfoQ《架构师》月刊</a></p>
</li>
<li>
<p><a href="https://www.w3cschool.cn/architectroad/" target="_blank" rel="noopener noreffer">《架构师之路》</a></p>
</li>
</ul>
<h3 id="纸质书">纸质书</h3>
<p><!-- raw HTML omitted -->更多架构方面书籍参考:<!-- raw HTML omitted --> <a href="https://github.com/sorenduan/awesome-java-books/blob/master/README.md#%E6%9E%B6%E6%9E%84" target="_blank" rel="noopener noreffer">awesome-java-books</a></p>
<h4 id="开发方面">开发方面</h4>
<ul>
<li>《阿里巴巴Java开发手册》<a href="https://www.coderxing.com/r.php?r=https://union-click.jd.com/jdc?d=BfL5CR" target="_blank" rel="noopener noreffer">详情</a></li>
</ul>
<h4 id="架构方面">架构方面</h4>
<ul>
<li>
<p>《软件架构师的12项修炼：技术技能篇》<a href="https://www.coderxing.com/r.php?r=https://union-click.jd.com/jdc?d=rTlo0m" target="_blank" rel="noopener noreffer">详情</a></p>
</li>
<li>
<p>《架构之美》<a href="https://www.coderxing.com/r.php?r=https://union-click.jd.com/jdc?d=1KECBZ" target="_blank" rel="noopener noreffer">详情</a></p>
</li>
<li>
<p>《分布式服务架构》<a href="https://www.coderxing.com/r.php?r=https://union-click.jd.com/jdc?d=hkzqtK" target="_blank" rel="noopener noreffer">详情</a></p>
</li>
<li>
<p>《聊聊架构》 <a href="https://www.coderxing.com/r.php?r=https://union-click.jd.com/jdc?d=A8Nd6Z" target="_blank" rel="noopener noreffer">详情</a></p>
</li>
<li>
<p>《云原生应用架构实践》<a href="https://www.coderxing.com/r.php?r=https://union-click.jd.com/jdc?d=D4WCpd" target="_blank" rel="noopener noreffer">详情</a></p>
</li>
<li>
<p>《亿级流量网站架构核心技术》<a href="https://www.coderxing.com/r.php?r=https://union-click.jd.com/jdc?d=Rdmd21" target="_blank" rel="noopener noreffer">详情</a></p>
</li>
<li>
<p>《淘宝技术这十年》<a href="https://www.coderxing.com/r.php?r=https://union-click.jd.com/jdc?d=CoUdGG" target="_blank" rel="noopener noreffer">详情</a></p>
</li>
<li>
<p>《企业IT架构转型之道-中台战略思想与架构实战》 <a href="https://www.coderxing.com/r.php?r=https://union-click.jd.com/jdc?d=BxS6eI" target="_blank" rel="noopener noreffer">详情</a></p>
</li>
<li>
<p>《高可用架构（第1卷）》<a href="https://www.coderxing.com/r.php?r=https://union-click.jd.com/jdc?d=BcjUwS" target="_blank" rel="noopener noreffer">详情</a></p>
</li>
</ul>
<h4 id="技术管理方面">技术管理方面</h4>
<ul>
<li>《CTO说》<a href="https://www.coderxing.com/r.php?r=https://union-click.jd.com/jdc?d=Gl3QAo" target="_blank" rel="noopener noreffer">详情</a></li>
<li>《技术管理之巅》<a href="https://www.coderxing.com/r.php?r=https://union-click.jd.com/jdc?d=MeloLt" target="_blank" rel="noopener noreffer">详情</a></li>
<li>《网易一千零一夜：互联网产品项目管理实战》<a href="https://www.coderxing.com/r.php?r=https://union-click.jd.com/jdc?d=qPuqMg" target="_blank" rel="noopener noreffer">详情</a></li>
</ul>
<h4 id="基础理论-1">基础理论</h4>
<ul>
<li>《数学之美》<a href="https://www.coderxing.com/r.php?r=https://union-click.jd.com/jdc?d=0seUpO" target="_blank" rel="noopener noreffer">详情</a></li>
<li>《编程珠玑》<a href="https://www.coderxing.com/r.php?r=https://union-click.jd.com/jdc?d=I7jj9r" target="_blank" rel="noopener noreffer">详情</a></li>
</ul>
<h4 id="工具方面">工具方面</h4>
<p>TODO</p>
<h4 id="大数据方面">大数据方面</h4>
<h1 id="技术资源">技术资源</h1>
<h2 id="开源资源">开源资源</h2>
<ul>
<li>
<p><a href="https://github.com" target="_blank" rel="noopener noreffer">github</a></p>
</li>
<li>
<p><a href="https://www.apache.org/index.html" target="_blank" rel="noopener noreffer">Apache 软件基金会</a></p>
</li>
</ul>
<h2 id="手册文档教程">手册、文档、教程</h2>
<p><strong>国内：</strong></p>
<ul>
<li>
<p><a href="http://w3cschool.cn" target="_blank" rel="noopener noreffer">W3Cschool</a></p>
</li>
<li>
<p><a href="http://www.runoob.com/" target="_blank" rel="noopener noreffer">Runoob.com</a></p>
<ul>
<li>HTML 、 CSS、XML、Java、Python、PHP、设计模式等入门手册。</li>
</ul>
</li>
<li>
<p><a href="https://love2.io/" target="_blank" rel="noopener noreffer">Love2.io</a></p>
<ul>
<li>很多很多中文在线电子书，是一个全新的开源技术文档分享平台。</li>
</ul>
</li>
<li>
<p><a href="http://gitbook.cn/" target="_blank" rel="noopener noreffer">gitbook.cn</a></p>
<ul>
<li>付费电子书。</li>
</ul>
</li>
<li>
<p><a href="http://www.apachecn.org/" target="_blank" rel="noopener noreffer">ApacheCN</a></p>
<ul>
<li>AI、大数据方面系列中文文档。</li>
</ul>
</li>
</ul>
<p><strong>国外：</strong></p>
<ul>
<li><a href="http://www.quickcode.co/" target="_blank" rel="noopener noreffer">Quick Code</a>
<ul>
<li>免费在线技术教程。</li>
</ul>
</li>
<li><a href="http://gitbook.com" target="_blank" rel="noopener noreffer">gitbook.com</a>
<ul>
<li>有部分中文电子书。</li>
</ul>
</li>
<li><a href="https://www.cheatography.com/" target="_blank" rel="noopener noreffer">Cheatography</a>
<ul>
<li>Cheat Sheets 大全，单页文档网站。</li>
</ul>
</li>
<li><a href="https://www.tutorialspoint.com/index.htm" target="_blank" rel="noopener noreffer">Tutorialspoint</a>
<ul>
<li>知名教程网站，提供Java、Python、JS、SQL、大数据等高质量入门教程。</li>
</ul>
</li>
</ul>
<h2 id="在线课堂">在线课堂</h2>
<ul>
<li><a href="http://www.xuetuwuyou.com/" target="_blank" rel="noopener noreffer">学徒无忧</a></li>
<li><a href="https://time.geekbang.org/" target="_blank" rel="noopener noreffer">极客时间</a></li>
<li><a href="https://segmentfault.com/lives" target="_blank" rel="noopener noreffer">segmentfault</a></li>
<li><a href="https://new.stuq.org/course/explore" target="_blank" rel="noopener noreffer">斯达克学院</a></li>
<li><a href="http://nowcoder.com" target="_blank" rel="noopener noreffer">牛客网</a></li>
<li><a href="https://www.jikexueyuan.com/" target="_blank" rel="noopener noreffer">极客学院</a></li>
<li><a href="http://edu.51cto.com/" target="_blank" rel="noopener noreffer">51CTO学院</a></li>
</ul>
<h2 id="会议活动">会议、活动</h2>
<ul>
<li><a href="http://www.infoq.com/cn/qcon/" target="_blank" rel="noopener noreffer">QCon</a></li>
<li><a href="https://archsummit.com" target="_blank" rel="noopener noreffer">ArchSummit</a></li>
<li><a href="http://www.thegitc.com/" target="_blank" rel="noopener noreffer">GITC全球互联网技术大会</a></li>
</ul>
<p><strong>活动发布平台:</strong></p>
<ul>
<li><a href="http://www.huodongxing.com/" target="_blank" rel="noopener noreffer">活动行</a></li>
</ul>
<h2 id="常用app">常用APP</h2>
<ul>
<li><a href="https://time.geekbang.org" target="_blank" rel="noopener noreffer">极客时间</a></li>
<li><a href="https://www.igetget.com" target="_blank" rel="noopener noreffer">得到</a></li>
</ul>
<h2 id="找工作">找工作</h2>
<ul>
<li><a href="https://www.zhipin.com" target="_blank" rel="noopener noreffer">Boss直聘</a></li>
<li><a href="https://www.lagou.com" target="_blank" rel="noopener noreffer">拉勾网</a></li>
<li><a href="https://www.liepin.com" target="_blank" rel="noopener noreffer">猎聘</a></li>
<li><a href="https://cn.100offer.com/" target="_blank" rel="noopener noreffer">100Offer</a></li>
</ul>
<h2 id="工具">工具</h2>
<ul>
<li><a href="https://s.geekbang.org/" target="_blank" rel="noopener noreffer">极客搜索</a>
<ul>
<li>技术文章搜索引擎。</li>
</ul>
</li>
</ul>
<h2 id="代码托管">代码托管</h2>
<ul>
<li><a href="https://coding.net" target="_blank" rel="noopener noreffer">Coding</a></li>
<li><a href="https://gitee.com/" target="_blank" rel="noopener noreffer">码云</a></li>
</ul>
<h2 id="文件服务">文件服务</h2>
<ul>
<li>七牛</li>
<li>又拍云</li>
</ul>
<h2 id="综合云服务商">综合云服务商</h2>
<ul>
<li>阿里云</li>
<li><a href="https://cloud.tencent.com/redirect.php?redirect=1012&amp;cps_key=c2665015d90871c0cb20fef91b7afc3c" target="_blank" rel="noopener noreffer">腾讯云</a></li>
<li>百度云</li>
<li>新浪云</li>
<li>金山云</li>
<li><a href="https://amazonaws-china.com/cn/" target="_blank" rel="noopener noreffer">亚马逊云(AWS)</a></li>
<li><a href="https://cloud.google.com/?hl=zh-cn" target="_blank" rel="noopener noreffer">谷歌云</a></li>
<li><a href="https://azure.microsoft.com/zh-cn/" target="_blank" rel="noopener noreffer">微软云</a></li>
</ul>
<h3 id="vps">VPS</h3>
<ul>
<li><a href="http://linode.com" target="_blank" rel="noopener noreffer">Linode</a></li>
<li><a href="https://www.digitalocean.com" target="_blank" rel="noopener noreffer">DigitalOcean</a></li>
<li><a href="https://www.vultr.com/" target="_blank" rel="noopener noreffer">Vultr</a></li>
</ul>
</div><div class="post-footer" id="post-footer">
    <div class="post-info">
        <div class="post-info-line">
            <div class="post-info-mod">
                <span>Updated on 2019-07-08</span>
            </div>
            <div class="post-info-license"></div>
        </div>
        <div class="post-info-line">
            <div class="post-info-md"></div>
            <div class="post-info-share">
                <span></span>
            </div>
        </div>
    </div>

    <div class="post-info-more">
        <section class="post-tags"><i class="fas fa-tags fa-fw"></i>&nbsp;<a href="/tags/%E8%BD%AC%E8%BD%BD/">转载</a>,&nbsp;<a href="/tags/%E6%9E%B6%E6%9E%84/">架构</a>,&nbsp;<a href="/tags/%E5%90%8E%E7%AB%AF/">后端</a></section>
        <section>
            <span><a href="javascript:void(0);" onclick="window.history.back();">Back</a></span>&nbsp;|&nbsp;<span><a href="/">Home</a></span>
        </section>
    </div>

    <div class="post-nav"><a href="/hugo_quick_start/" class="prev" rel="prev" title="Hugo快速上手"><i class="fas fa-angle-left fa-fw"></i>Hugo快速上手</a>
            <a href="/git_muilt_sshkey/" class="next" rel="next" title="同一台电脑同时配置多个ssh key">同一台电脑同时配置多个ssh key<i class="fas fa-angle-right fa-fw"></i></a></div>
</div>
</article></div>
            </main><footer class="footer">
        <div class="footer-container"><div class="footer-line">Powered by <a href="https://gohugo.io/" target="_blank" rel="noopener noreffer" title="Hugo 0.75.1">Hugo</a> | Theme - <a href="https://github.com/dillonzq/LoveIt" target="_blank" rel="noopener noreffer" title="LoveIt 0.2.10"><i class="far fa-kiss-wink-heart fa-fw"></i> LoveIt</a>
                </div><div class="footer-line"><i class="far fa-copyright fa-fw"></i><span itemprop="copyrightYear">2019 - 2020</span><span class="author" itemprop="copyrightHolder">&nbsp;<a href="/" target="_blank"></a></span>&nbsp;|&nbsp;<span class="license">本文采用<a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/" target="_blank">知识共享署名-非商业性使用 4.0 国际许可协议</a>进行许可</span></div>
        </div>
    </footer></div>

        <div id="fixed-buttons"><a href="#" id="back-to-top" class="fixed-button" title="Back to Top">
                <i class="fas fa-arrow-up fa-fw"></i>
            </a><a href="#" id="view-comments" class="fixed-button" title="View Comments">
                <i class="fas fa-comment fa-fw"></i>
            </a>
        </div><script type="text/javascript" src="/lib/smooth-scroll/smooth-scroll.min.js"></script><script type="text/javascript" src="/lib/autocomplete/autocomplete.min.js"></script><script type="text/javascript" src="/lib/algoliasearch/algoliasearch-lite.umd.min.js"></script><script type="text/javascript" src="/lib/lazysizes/lazysizes.min.js"></script><script type="text/javascript" src="/lib/clipboard/clipboard.min.js"></script><script type="text/javascript">window.config={"code":{"copyTitle":"Copy to clipboard","maxShownLines":10},"comment":{},"search":{"algoliaAppID":"JJRDOPDPLW","algoliaIndex":"amath_blog","algoliaSearchKey":"e529bedc6a3af35b53e2597f1c7550c2","highlightTag":"em","maxResultLength":10,"noResultsFound":"No results found","snippetLength":50,"type":"algolia"}};</script><script type="text/javascript" src="/js/theme.min.js"></script></body>
</html>
